【发布时间】: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对象,或者客户端上没有正确的监听器。我们必须看到更多的代码上下文(客户端和服务器)才能提供进一步的建议。 -
由于您可能是新来的,因此对于此类问题,stackoverflow 要求您提供Minimal, Reproducible Example。您需要发布更多代码来提供它。
-
好吧,我想这就是我们所需要的
-
socket.emit()有效和无效的代码在哪里?你是说console.log("fine")显示正确,但console.log("wd")不正确? -
另外,您的网页是从同一台服务器加载的吗?我问是因为我没有看到任何可以为您的网页或 socket.io 代码提供服务的快速路由。