[英]Socket.io only emitting uppercase events
所以我想尝试 socket.io 库,所有示例都运行良好(带有小写字母)。 但是当我尝试编写我的一个小 ping->pong 时,它不会发出事件(我可以在 firefox 网络选项卡中查看消息日志)。
代码服务器(节点 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”,但 sockets 不发出任何东西。 如果我从“ping”->“PING”和“pong”->“PONG”更改发射和开启,一切正常。 我完全不明白为什么会这样以及为什么这些示例可以使用小写字母。
由于与大写/小写事件名称没有任何关系,您可以随意使用它们。
但是ping/pong
实际上由 socket.io 服务器使用,其中有几个。 您可以在 此处查看列表。 它在页面底部=)
因此,除非您对这些内容感兴趣,否则您可以使用大写/小写的事件/房间名称。
这些事件也可由用户收听。
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 内部使用。 如果您想了解更多关于我将在此处留下链接,您可以在其中看到发出的ping
和pong
事件。
Sender.js:ping也 Receiver.js: ping & pong
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.