繁体   English   中英

Socket.io 仅发出大写事件

[英]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 内部使用。 如果您想了解更多关于我将在此处留下链接,您可以在其中看到发出的pingpong事件。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM