gpt4 book ai didi

node.js - 发送 socket.io .once 消息

转载 作者:搜寻专家 更新时间:2023-11-01 00:22:58 25 4
gpt4 key购买 nike

这可以在没有 .once 调用的情况下工作。

我正在尝试从服务器端代码发送一条消息

io.on('connect', function (socket) {
socket.once('connect', function() {
socket.emit('mydata', { feed: result});

但是除非我删除第二行,否则我在客户端什么也得不到。我也试过 socket.once('mydata', { feed: result}) 但是:

throw new TypeError('listener must be a function');

换句话说,只有当有新的“mydata”时,如何才能向客户端发送消息?

谢谢

最佳答案

首先,.once() 仅适用于事件监听器 - 当您只想在下次事件发生时收到通知,而不是后续发生的时间。它与发送消息无关。

您的特定代码试图做什么实际上没有意义。您正处于 connect 事件中,并且正在尝试监听另一个 connect 事件?如果您更完整地描述您要完成的目标,这会有所帮助吗? “仅当有新的 mydata 时”是什么意思?如何判断是否有新的 mydata?

如果您只是想发送 mydata 消息,当客户端首次连接时,您可以这样做:

io.on('connect', function(socket) {
socket.emit('mydata', { feed: result });
}

如果你想确保即使在同一个套接字上重新连接的情况下也只向连接发送一次此消息,你可以这样做:

io.on('connect', function(socket) {
if (!socket.sentMydata) {
socket.emit('mydata', { feed: result });
socket.sentMydata = true;
}
}

如果你想确保这个客户端只发送一次这个消息,即使页面被重新加载或者客户端导航离开和返回,那么你将不得不使用一个持久性标记,比如 cookie 或一些 session id 或者类似的东西。

关于node.js - 发送 socket.io .once 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com