【发布时间】: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内部使用了ping和pong,也许它阻止了发射?我实际上并没有检查代码,我知道你可以监听ping/ping事件,但我不确定你是否真的可以发出。其实这里有一个建议github.com/socketio/socket.io/blob/master/docs/emit.md -
哇,当我用谷歌搜索时,我没有找到那些受限名称。感谢您的帮助,这完全回答了我的问题:) 请发表您的评论作为答案,以便我接受并获得声誉
标签: javascript node.js websocket socket.io