nodejs socket.io - 连接到服务器但发射不做任何事情

Posted

技术标签:

【中文标题】nodejs socket.io - 连接到服务器但发射不做任何事情【英文标题】:nodejs socket.io - connected to server but emit doesn't do anything 【发布时间】:2016-09-04 08:40:58 【问题描述】:

我开始使用Socket.io 和我的nodeJS API

我成功连接了我的用户,并在我的服务器上显示了一条消息。

但是现在,我正在尝试将数据发送到我的客户端 -> 然后是服务器 -> 然后再次发送到客户端等等。

但是当我使用emit 时,没有任何附加内容...所以这是我的代码:

SERVER SIDE

    io.on('connection', function(socket)
      console.log("user connected") // I see that
      socket.emit('text', 'it works!'); //

      socket.on('test1', function (data) 
        console.log('received 1 : ');  //  Never showed 
        console.log(data); // Never showed
      );

     

CLIENT SIDE

    var socket = io.connect(myUrl); // good connection

    socket.emit ('test1', map: 4, coords: '0.0'); // never showed on the server side


    socket.on('text', function(text) 
      alert(text);  // never showed
     socket.emit('test',  "test": "test2" );
    );

有什么想法吗?

谢谢!

【问题讨论】:

控制台有什么错误吗? 控制台中没有显示任何内容 请将问题中的代码恢复为您首次发布时的状态。当您更改最初发布的代码时,您会将问题更改为新的不同问题,从而使迄今为止收到的答案完全脱离上下文。这不是这个网站应该如何工作的。如果您需要传达额外的代码,那么您可以在之后添加它。在这种特殊情况下,您不需要显示您尝试过的代码,因为答案中已经涵盖了这些代码。您可以添加一条您尝试过该建议的评论并解释您观察到的内容。 我认为您可能在 console.log("user connected") 之后缺少“;”。尝试添加“;”,看看它是否有效。 回滚编辑 - 缺少的 ';'没有改变任何东西 【参考方案1】:

这对我有用

客户端

//sending custom data to server after successful connection
socket.on('connect', function()
           this.socket.emit('client-to-server', map: 4, coords: '0.0');
        );
//listening the event fired by the socket server
socket.on('server-to-client', function(dataSendbyTheServer)
            // do whatever you want
               console.log(dataSendbyTheServer);
        );

服务器端

io.on('connection', function(socket) 
// listening the event fired by the client
socket.on('client-to-server', function (data) 
    console.log('received 1 : ');
    // sending back to client
    io.emit('server-to-client', data)
 );
);

【讨论】:

【参考方案2】:

在客户端,您必须等到连接成功才能安全地将数据发送到服务器。连接到服务器不是同步的或瞬时的(因此它不会立即准备好)。您正在尝试在连接准备好之前发送数据。

将您的第一次数据发送放在 socket.on('connect', ...) 处理程序中。

var socket = io.connect(myUrl); // good connection

// send some data as soon as we are connected
socket.on('connect', function() 
    socket.emit ('test1', map: 4, coords: '0.0');
);


socket.on('text', function(text) 
  alert(text);  // never showed
 socket.emit('test',  "test": "test2" );
);

【讨论】:

我已按照您的指示编辑了我的帖子,但没有任何变化:( @F4Ke - 首先,您需要检查客户端和服务器上的控制台以确保没有错误。然后,您需要检查浏览器调试器中的网络选项卡,以查看是否所有内容都按预期发送和接收。 @F4Ke - 而且,请不要编辑您问题中的原始代码。这改变了您最初提出的问题,并使迄今为止提供的答案毫无意义,这不是该网站应该如何工作的。如果您需要显示其他代码,请将其添加到问题的末尾。在这种情况下,您根本不需要编辑您的问题。一个评论就够了。 @F4Ke - 在网络选项卡中,您是否深入了解了各个 webSocket 数据包并查看双向发送的内容? @MedetTleukabiluly - 我通常只是向 OP 解释为什么他们不应该将问题更改为一个全新的问题,并建议他们应该恢复以前存在的内容并且他们几乎总是这样做(因为他们在这种情况下做了)。这是教他们堆栈溢出应该如何工作的问题。【参考方案3】:

您的 Starter Code 似乎是有效的,您需要检查两件事:

如果您成功在客户端包含socket.min.js 如果您在控制台中打印任何错误

【讨论】:

与服务器套接字的连接正在工作,这只是无法工作的发射 你能帮我一个忙,用一个无辜的 console.log 替换警报吗? 仍然没有出现 哇,这太奇怪了!我可以看看你的 express.js 代码吗? 你有它'服务器端'除了那个没有什么重要的

以上是关于nodejs socket.io - 连接到服务器但发射不做任何事情的主要内容,如果未能解决你的问题,请参考以下文章

iOS Client 连接到 NodeJS socket.io 导致 Stream end 遇到

nodejs socket.io - 连接到服务器但发射不做任何事情

通过 PHP 连接到 socket.io(nodejs)

节点 js - Socket.io-client 未连接到 socket.io 服务器

Socket.io - nodejs 服务器端。重新连接后传输关闭

如何从不同的主机连接到 socket.io 服务器?