当前位置: 首页 > 知识库问答 >
问题:

只发出大写事件的socket.io

奚修伟
2023-03-14

代码服务器(节点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”被打印出来,但Socket不发射任何东西。如果我从“ping”->“ping”和从“pong”->“pong”改变发射和打开,一切都很好。我只是完全搞不懂为什么会这样,为什么示例可以使用小写发出。

共有1个答案

景麒
2023-03-14

由于与大写/小写事件名称没有任何关系,您可以根据自己的意愿使用它们。

但是ping/pong实际上使用by 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);
}
 类似资料:
  • 我一直在考虑使用Apache Kafka作为事件源配置中的事件存储。发布的事件将与特定的资源相关联,传递到与资源类型相关联的主题,并按资源ID分片到分区中。因此,例如,创建类型为Folder和id 1的资源将产生一个FolderCreate事件,该事件将通过在主题中的分区总数中对id 1进行分片来传递到给定分区中的“Folders”主题。即使我不知道如何处理使日志不一致的并发事件。 最简单的场景是

  • 嗨,我正在尝试从PHP向socketio服务器发出事件。这两个叉子我都试过了: https://github.com/rase-/socket.io-php-emitter https://github.com/ashiina/socket.io-php-emitter 你知道我做错了什么吗?

  • 所以我有一个JavaFX应用程序,它包含一个按钮,应该可以打开DirectoryChooser onclick。当我触发它一次时,它会做它应该做的,非常好。我一关闭DirectoryChooser对话框,按钮就什么都不做了。我在网上搜索一些“事件重置”或类似的内容,因为我认为该事件可能仍处于“活动”状态,因此不再触发,但没有任何结果: 不知道这是完全错误的方法,还是我错过了一些重要的东西。我希望你

  • 问题内容: 我在PostgreSQL数据库中有大约一百万个具有以下格式的事件: 大约有50,000个唯一流。 我需要找到所有两个事件之间的时间间隔都超过特定时间段的所有事件。换句话说,我需要找到在特定时间段内没有事件的事件对。 例如: 在这种情况下,我想找到对(f,g),因为这些是紧挨着缺口的事件。 我不在乎查询是否慢,即在一百万条记录上花费一个小时左右就可以了。但是,数据集将保持增长,因此,如果

  • 问题内容: 如何从工厂或服务发出事件。我无法将$ scope注入工厂,因此无法发出事件。 我收到以下错误- 谢谢,Murtaza 问题答案: 您不能将控制器的作用域注入服务。您可以做的是: 将范围实例作为参数传递给您的服务功能之一: 例如 将$ rootScope注入到您的服务中: 例如

  • 问题内容: 如果我没记错的话,我记得异步I / O的“事件循环”模型(Node.js,Nginx)不适合用于提供大文件。 是这种情况,如果是,周围是否有方法?我正在考虑在Node中编写一个实时文件浏览器/文件服务器,但是文件的大小可能在100MB到3GB之间。我认为事件循环将一直阻塞直到文件被完全提供为止? 问题答案: 不,它不会被阻止。node.js将分块读取文件,然后将那些块发送到客户端。在大