【问题标题】:socket.io - .on not working on client sidesocket.io - .on 不能在客户端工作
【发布时间】:2019-04-04 20:04:06
【问题描述】:

我有一些使用 socket.io 的非常基本的代码

客户

var socket = io();

// Do some stuff...

socket.emit('hello', 'please like me');

// Wait for a response
socket.on('hello back!', function(msg) {
    console.log('Yay, he replied:', msg);
});

服务器

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

io.on('connection', function(socket) {
    console.log('a user connected');

    socket.on('disconnect', function() {
        console.log('user disconnected');
    });

    socket.on('hello', function() {
        // Code to decide wether or not I like the client
        // ...
        // I do like the client!
        socket.emit('hello back!', 'how are you');
        console.log('I said hello back!');
    });
});

希望你能拍到这张照片。所以理想情况下,这会发生:

  1. 客户端连接
  2. 一段时间后,客户端发出hello
  3. 服务器看到这个,发出hello back!
  4. 客户端注意到hello back! 事件
  5. 大家都很开心!

但不幸的是,这对我来说并非如此。相反,步骤 1-3 可以完美运行。但是,当您到达第 4 步和第 5 步时,事情开始分崩离析。发出hello back! 事件后,客户端从不记录任何内容。

不是我的完整代码,我想它会让你更容易理解它。我很可能在某个地方犯了一些愚蠢的错误,也许没有将其包含在此代码中。但请让我知道我所做的是否存在根本性的问题。

干杯

【问题讨论】:

  • 此代码示例中没有任何明显错误,因此它可能与您的实际代码中未显示的内容有关。我建议将socket.on('hello back!', ...) 移到socket.emit('hello', ...) 之前,这样您就可以在发送消息之前确定响应的侦听器就位,但这可能不是主要问题。
  • @jfriend00 可以,非常感谢您的回复。

标签: node.js sockets websocket socket.io


【解决方案1】:

这是几年前的事了,但万一将来有人偶然发现:

我的问题与上面显示的代码无关。相反,这是一个配置错误。

我在 glitch.com 上托管我的项目,他们声明他们支持 websockets,但由于服务器无法连接到客户端(客户端在 websocket 连接后根本没有从服务器接收到任何数据)导致错误打开)。

这是我在 2018 年使用 glitch.com 时遇到的错误,我知道其他人也遇到过。它似乎也与通过域名和 SSL 连接的 websockets 有关,但我不记得确切的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 2013-05-07
    • 1970-01-01
    • 2019-02-15
    • 2017-08-17
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    相关资源
    最近更新 更多