当前位置: 首页 > 面试题库 >

从服务器而不是从特定客户端广播node.js + socket.io?

华化
2023-03-14
问题内容

我正在使用node.js + socket.io构建一个像实时新闻源这样的简单系统。

由于这是一个“只读”系统,因此客户端可以连接和接收数据,但是客户端实际上从不发送自己的任何数据。服务器生成需要发送给所有客户端的消息,没有客户端生成任何消息;但我确实需要广播。

socket.io广播的文档(页面末尾)说

要广播,只需broadcastemitsend方法调用添加标记。广播意味着将消息发送到其他人(除了启动该消息的套接字之外)。

因此,我目前捕获了最新的客户端,将其连接到变量中,然后连接emit()到该套接字
broadcast.emit()该套接字,以便该新客户端获取新数据
所有其他客户端。但是感觉客户端的角色不过是我认为socket.io已经支持的一种解决方法。

有没有一种方法可以根据 服务器启动事件 向所有客户端发送数据?

我当前的方法大致是:

var socket;

io.sockets.on("connection", function (s) {
  socket = s;
});

/* bunch of real logic, yadda yadda ... */

myServerSideNewsFeed.onNewEntry(function (msg) {
  socket.emit("msg", { "msg" : msg });
  socket.broadcast.emit("msg", { "msg" : msg });
});

基本上,导致数据需要发送到客户端的事件都是服务器端的,而不是客户端端的。


问题答案:

为什么不像下面这样呢?

io.sockets.emit('hello',{msg:'abc'});


 类似资料:
  • 我们收到了这段代码,应该对其进行修改,以便无论何时客户端连接到服务器并发送消息,服务器都应该回复我听到了,伙计。这适用于一个或多个客户机,但下一个任务是,当新客户机连接时,服务器应该告诉所有其他已连接的客户机。 我以为这会很容易,但结果并不像我想象的那样。由于服务器总是得到sock 3,第一个客户端得到4,第二个客户端得到5等等,所以我尝试创建一个for循环,每当一个新客户端连接时,该循环就会向4

  • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

  • 我开发了一个客户端-服务器UDP应用程序。服务器UDP套接字设置为广播UDP套接字。双方的代码不会产生任何错误,但客户端未接收到从广播UDP服务器端发送的消息。请看一下我的代码,我知道有一些错误我想不通。我真的需要帮助: 服务器: 客户: }

  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock

  • 尝试使用Express将参数从服务器端传递到Node.js中的客户端。 但到目前为止什么都没起作用。你们要怎么做?非常感谢你的帮助:)

  • 在文档的socket.io客户端套接字部分http://socket.io/docs/client-api/#io#socket指的是套接字文档,这意味着服务器套接字对象和客户端套接字对象是相同的。