0

所以我想试试 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”,但套接字不发出任何东西。如果我从“ping”->“PING”和“pong”->“PONG”更改发射和开启,一切正常。我完全不明白为什么会这样以及为什么这些示例可以使用小写字母。

4

1 回答 1

1

由于与大写/小写事件名称没有任何关系,您可以随意使用它们。

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 的使用来自wssocket.io 内部也使用的。如果您想了解更多关于我将在此处留下您可以查看pingpong发出事件的链接的链接。

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

于 2020-06-30T02:55:29.247 回答