【问题标题】:Socket.io only emitting uppercase eventsSocket.io 只发出大写事件
【发布时间】:2020-06-29 01:01:39
【问题描述】:

所以我想试用 socket.io 库,所有示例都运行良好(带有小写字母)。但是当我尝试编写我的一个小 ping->pong 时,它不会发出事件(我可以在 firefox 网络选项卡中查看消息日志)。

代码服务器(Node JS):

const express = require("express");
const app = express();
const http = require("http").createServer(app);
const io = require("socket.io")(http);
const port = process.env.PORT || 9000;

app.use(express.static(__dirname + "/public"));

io.on("connection", (socket) => {
    console.log("Socket connected");
    socket.on("ping", () => {
        console.log("PING");
        socket.emit("pong", {});
    });
});

http.listen(port, () => console.log("listening on port " + port));

浏览器中的代码:

var socket = io();

socket.on("pong", () => {
    console.log("recieved PONG");
});

const ping = () => {
    socket.emit("ping");
};


document.addEventListener("mousedown", ping, false);

奇怪的是,这似乎不起作用,打印了“Socket connected”,但套接字不发出任何东西。如果我从“ping”->“PING”和“pong”->“PONG”更改发射和开启,一切正常。我完全不明白为什么会这样以及为什么这些示例可以使用小写字母。

【问题讨论】:

  • 据我所知,区分大小写的事件没有限制。由于socket.io 内部使用了pingpong,也许它阻止了发射?我实际上并没有检查代码,我知道你可以监听ping/ping 事件,但我不确定你是否真的可以发出。其实这里有一个建议github.com/socketio/socket.io/blob/master/docs/emit.md
  • 哇,当我用谷歌搜索时,我没有找到那些受限名称。感谢您的帮助,这完全回答了我的问题:) 请发表您的评论作为答案,以便我接受并获得声誉

标签: javascript node.js websocket socket.io


【解决方案1】:

由于与大写/小写事件名称无关,您可以随意使用它们。

ping/pong 实际上由 socket.io 服务器使用其中的几个。你可以看到列表here。它在页面底部 =)

因此,除非您对这些内容感兴趣,否则您可以使用大写/小写的事件/房间名称。

用户也可以收听这些事件。

io.on('connect', onConnect);
function onConnect(socket) {
    socket.on('error', onError);
    socket.on('disconnect', onDisconnect);
    // ... and others too.

    // You can see and console on ping/pong events too.
    socket.on('ping', console.log);
    socket.on('pong', console.log);
}

我知道 socke.io 的文档确实不是最好的 :D

顺便说一句,ping 和 pong 的使用来自ws,socket.io 内部也使用了它。如果您想了解更多信息,我会在此处留下链接,您可以在其中看到 pingpong 事件发射。

Sender.js: ping 也是 Receiver.js:ping & pong

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 2019-10-30
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多