一个特定的“socket.on()”在客户端不起作用
Posted
技术标签:
【中文标题】一个特定的“socket.on()”在客户端不起作用【英文标题】:One specific "socket.on()" doesn't work on client side 【发布时间】:2019-10-11 07:40:18 【问题描述】:服务器从 socket.emit("Wiadomosc") 收到消息,但客户端没有, 但是当我从服务器 io.emit("Wiadomosc") 发出消息时,客户端会收到消息;
没有错误,其他 socket.emit() socket.on() 工作正常 我尝试了一切:从工作功能中复制了所有内容,但什么也没有。 我认为我有问题而不是代码有问题
好的,客户端:
socket = io.connect("localhost:4000",
transports: ['websocket']
);
socket.on("Wiadomosc", function ()
console.log("wd");
);
socket.on("gotowosc", function ()
$(".gotowosc").css("display", "block");
);
//somewhere else in code
console.log(socket) //to see if it's fine, and it is
socket.emit("Wiadomosc");
第二个效果很好
服务器端:
let express = require("express");
let app = express();
let server = app.listen(4000, function ()
console.log("listening on port 4000");
);
let socket = require("socket.io");
let io = socket(server);
io.on("connection", function (socket)
socket.on("Wiadomosc", function () //I did something like that to check if emit works, and it works
console.log("fine");
);
);
io.emit("gotowosc");
【问题讨论】:
如果客户端没有收到socket.emit("Wiadomosc");
,那么可能是因为您没有在服务器上使用正确的socket
对象,或者客户端上没有正确的监听器。我们必须看到更多的代码上下文(客户端和服务器)才能提供进一步的建议。
由于您可能是新来的,因此对于此类问题,*** 要求您提供Minimal, Reproducible Example。您需要发布更多代码来提供它。
好吧,我想这就是我们所需要的
socket.emit()
有效和无效的代码在哪里?你是说console.log("fine")
显示正确,但console.log("wd")
不正确?
另外,您的网页是从同一台服务器加载的吗?我问是因为我没有看到任何可以为您的网页或 socket.io 代码提供服务的快速路由。
【参考方案1】:
从客户端发送到服务器,而不是发送到任何其他客户端。如果您想从一个客户端向所有客户端发送消息,则向服务器发送一条消息,然后对服务器进行编码以接收它并将其发送给其他客户端。
【讨论】:
以上是关于一个特定的“socket.on()”在客户端不起作用的主要内容,如果未能解决你的问题,请参考以下文章
用户杀死应用程序后,Socket.io android socket.on 不起作用