【发布时间】: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!');
});
});
希望你能拍到这张照片。所以理想情况下,这会发生:
- 客户端连接
- 一段时间后,客户端发出
hello - 服务器看到这个,发出
hello back! - 客户端注意到
hello back!事件 - 大家都很开心!
但不幸的是,这对我来说并非如此。相反,步骤 1-3 可以完美运行。但是,当您到达第 4 步和第 5 步时,事情开始分崩离析。发出hello back! 事件后,客户端从不记录任何内容。
这不是我的完整代码,我想它会让你更容易理解它。我很可能在某个地方犯了一些愚蠢的错误,也许没有将其包含在此代码中。但请让我知道我所做的是否存在根本性的问题。
干杯
【问题讨论】:
-
此代码示例中没有任何明显错误,因此它可能与您的实际代码中未显示的内容有关。我建议将
socket.on('hello back!', ...)移到socket.emit('hello', ...)之前,这样您就可以在发送消息之前确定响应的侦听器就位,但这可能不是主要问题。 -
@jfriend00 可以,非常感谢您的回复。
标签: node.js sockets websocket socket.io