【问题标题】:Server not receiving client's socket.io message服务器没有收到客户端的 socket.io 消息
【发布时间】:2016-07-13 17:11:34
【问题描述】:

我开始了一个简单的 express+socket.io 项目。 在服务器上,我注册了套接字的“连接”事件,然后我向客户端发送了一条消息。这很好用。

当我在客户端从服务器接收到消息时,在这个事件处理程序中我执行 socket.emit('message', 'some text');

此消息未到达服务器。 我知道它应该非常简单,因此我认为我错过了一些愚蠢的东西。 任何帮助表示赞赏。

服务器代码:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/', function (req, res) {
    res.sendfile('index.html');
});

io.on('connection', function (socket) {
    console.log('a user connected');
    io.emit('server-message', 'hello socket.io server');
});

io.on('message', function(message) {
    console.log(message);
});

客户端代码:

window.socket = io.connect('http://localhost:3000');

socket.on('server-message', function (message) {
            console.log(message);
            socket.emit('message', 'hello socket.io from browser');
         });

【问题讨论】:

  • 我发现了一件很棘手的事情,希望你在模拟器上的时区和时间在你实时的时候是对的!否则它会吃掉消息

标签: node.js socket.io


【解决方案1】:

看起来 io.emit('server-message', 'hello socket.io server'); 应该更改为 socket.emit('server-message', 'hello socket.io server'); 然后您需要将以下内容移动到 connection 事件侦听器中:

io.on('message', function(message) {
  console.log(message);
});

并将其更改为

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

【讨论】:

  • 你让我大开眼界!我不明白从哪里获得服务器上的套接字对象。然后我搜索了一下,发现“连接”事件有它,应该在那里订阅。谢谢!
  • 我想知道为什么您将 io.on 更改为 socket.on,然后意识到来自 io.on('connection', function (socket) 的参数就是原因。我不知道为什么,但这在文档中并不是很明显,即使它就在那里。对于新手来说似乎是一个常见的错误,但如果你不了解它是如何工作的,真的很难找到答案。
猜你喜欢
  • 2018-11-02
  • 1970-01-01
  • 2012-04-07
  • 2020-12-25
  • 1970-01-01
  • 2019-08-08
  • 2017-04-22
  • 2014-11-29
  • 1970-01-01
相关资源
最近更新 更多