未检测到与socket.IO命名空间的连接

时间:2016-04-02 13:49:26

标签: node.js socket.io

在我的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'); 
 });

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

最后让它工作,不需要在路径部分放任何东西(如果我把它放在/test路由处理程序之外也没有用)

当我访问/test

时,此功能现已成功运行
var test = io.of('/test');
test.on('connection', function (socket) {
    console.log('connection to test');
});