【问题标题】:Socket.io Client-Side socket not emittingSocket.io 客户端套接字不发射
【发布时间】:2015-02-12 19:33:00
【问题描述】:

所以我正在运行一个简单的后端节点应用程序,其中 socket.io 与运行 socket.io 的客户端 javascript 通信。

我可以在客户端上很好地接收消息(我在控制台记录它们),但是没有收到我向服务器发送事件的回调函数。我认为根据我的研究,可能有一些我看不到的默默失败的事情。

客户端代码:

socket.on('connection', function(socket) {
    socket.on('welcome', function(data) {
        socket.emit('new_state', { data: '1' });
        console.log(data);
    });

    socket.emit('new_state', {data: '1'});

    socket.on('time', function(data) {
        console.log(data);
        socket.emit('new_state', {});
    });

    socket.on('updated_state', function(data) {
        console.log(data);
    });
});

服务器端:

// Socket.io server listens to our app
var io = require('socket.io').listen(app);

// Send current time to all connected clients
function sendTime() {
    io.sockets.emit('time', { time: new Date().toJSON() });
}

// Send current time every 10 secs
setInterval(sendTime, 3000);

// Emit welcome message on connection
io.sockets.on('connection', function(socket) {
    socket.emit('welcome', { message: 'Welcome!' });
    console.log('connection received');

    io.sockets.on('i am client', function(data) {
        console.log(data);
    });

    io.sockets.on('new_state', function(data) {
        console.log('client->server emits');
        io.sockets.emit('updated_state', { state: [1,2,3,4] });
    });

});



app.listen(3000);

现在的工作是 app.js 记录接收到的连接,但它从不记录或识别从客户端接收到的任何事件。有什么想法吗?我真的认为我没有得到一些无声的错误。

【问题讨论】:

  • 而不是io.sockets.on 在服务器端尝试socket.on。(连接除外)
  • 那么在on连接里面,使用回调中返回的socket对象来监听?
  • 是的,您正在侦听特定套接字(来自特定客户端)而不是任何套接字。 (您在客户端正确执行此操作)。您还应该在特定的套接字实例上发出。
  • 所以我不确定客户端代码是否没有正确发出,或者服务器是否没有正确监听。我该如何调试呢?

标签: javascript node.js sockets


【解决方案1】:

在连接内部使用您的回调套接字。命名空间“我是客户端”永远不会从前端客户端发出,因此它什么也不做。服务器应该是“新状态”。

socket.on('new_state', function(data) {
    console.log('From Client ' + data);
    socket.emit('updated_state', { state: [1,2,3,4] });
});

【讨论】:

  • 哦,废话,忘了,这也让我一直很困扰。在您的客户端上,命名空间应该是“连接”而不是“连接”。
  • 天哪,成功了!我还必须删除我放入该回调的套接字,因为它不是必需的并且未定义。三个字母的区别..
猜你喜欢
  • 1970-01-01
  • 2020-03-12
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多