在我的routes.js
文件中,我有/test
的路线,如下所示:
app.get('/test', function(req, res, next) {
res.sendFile(__dirname + '/test.html');
var nsp = io.of('/test');
console.log(nsp);
nsp.on('connection', function(socket){
console.log('connection made');
socket.on('new_task', function(msg){
nsp.emit('new_task', msg);
});
});
});
在test.html
中,我尝试连接/test
命名空间
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io('/test');
$('.exp_addtask').click(function(){
socket.emit('new_task', $('#m').val());
$('#m').val('');
});
socket.on('new_task', function(msg){
$('#messages').append('<div class="task-item"><div class="toggle"></div><p>' + msg + '</p></div>');
});
</script>
运行时没有错误,当我访问nsp
时,我会看到http://localhost/test
连接的所有详细信息,但我无法看到的是页面已建立连接被访问。无法像在全局命名空间中那样触发任何套接字。
编辑:在index.js
结束时,我是如何引入路线并启动服务器的:
require('./routes')(app);
http.listen(80, function(){
console.log('listening on *:80');
});
非常感谢任何帮助。
答案 0 :(得分:0)
最后让它工作,不需要在路径部分放任何东西(如果我把它放在/test
路由处理程序之外也没有用)
当我访问/test
:
var test = io.of('/test');
test.on('connection', function (socket) {
console.log('connection to test');
});