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 - 连接到服务器但发射不做任何事情
节点 js - Socket.io-client 未连接到 socket.io 服务器