事件开启。("事件"....从来没有被解雇过,为什么?



我正在与 socket.io 一起执行协作任务,为此我使用事件。

在我的服务器服务器中.js我有:

io.sockets.on('connection', function (socket) {
console.log("socketon");
socket.on('task', function(task){
console.log("another task");
task=ent.encode(task);
socket.broadcast.emit('task', {task : task});
})
});

在我看来,我已经分享了.ejs,我有:

var socket = io.connect('http://localhost:8080/shared/');
socket.on('task', function (data) {
printtask(data.task);
})
$('#addtask').submit(function () {
let task = $('#task').val();
socket.emit('task', task);
printtask(task);
$('#task').val('').focus();
return false;
});
function printtask(task) {
$('#todolistlist').prepend("<li> <a class='text-danger' href='#'>✘</a>" + task + '</li>');
}

当我转到控制台"socketon"中的页面时,套接字已内置并正常工作 http://localhost:8080/shared/但是当我单击我的提交时,我在控制台中没有"另一个任务"。
我不知道为什么我的事件"任务"没有被触发。
如果有人有想法,我会很高兴:)
PS:如果减号,请告诉我为什么,以便我可以升级我的帖子
编辑:
这里是服务器中传递的要求.js :

var express = require('express');
var app = express();
let server = require('http').createServer(app);
let ent = require('ent');
var session = require('cookie-session');
var bodyParser = require('body-parser');
let io = require('socket.io').listen(server);
var encodedUrl = bodyParser.urlencoded({ extended: false });

这里不同的get(我的套接字用于/shared(:

.get('/', function(req, res) {
res.render('index.ejs');
})
.get('/private/', function(req, res) {
res.render('todolist.ejs', {todolist: req.session.todolist});
})
.post('/private/add/', encodedUrl, function(req, res) {
if (req.body.addtodo !=''){
req.session.todolist.push(req.body.addtodo);
}
res.redirect('/private/');
})
.get('/private/delete/:index', function(req, res) {
if (req.param.index != '') {
req.session.todolist.splice(req.params.index, 1);
}
res.redirect('/private/');
})
.get('/shared/', function (req, res) {
res.render('shared.ejs');
})
.use(function(req, res, next){
res.redirect('/')
});

这里是我的共享.ejs 的 html 内容

<div class='container'>
<div class= row>
<ul id="todolistlist" class="offset-lg-2 col-lg-8 list-group list-group-flush">
</ul>
<section class="offset-lg-1 col-lg-1">
<p>connected:</p>    
<ul id="todolistmembers" class="list-group list-group-flush">
</ul>
</section>
</div>
<form id='addtask' method='post' class="form-inline offset-lg-2 mb-3 col-lg-8 align-items-center">
<div class="input-group w-100" >
<div class="input-group-prepend">
<label id="basic-addon3" class="input-group-text" for="addtodo">What to do ?</label>
</div>
<input type="text" id="task" class="form-control" style="text-align:right" name="addtodo" id="addtodo" autofocus />
<span class="input-group-append">
<input type="submit" class="btn btn-primary" value="add"/>
</span>
</div>
</form>
</div>
<script src="/js/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script src="/js/bootstrap.min.js"></script>

连接到"http://localhost:8080/shared/"而不是"http://localhost:8080"是连接到名为shared的特定 socket.io 命名空间。 因此,您的事件将仅在服务器上显示到该命名空间。因此,除非在该命名空间的服务器上注册事件处理程序或从连接 URL 中删除/shared,否则不会看到事件。

最新更新