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

如何使用单个连接socket.io

年光明
2023-03-14

我正在制作一个实时多人游戏socket.io和node.js,我有一个html文件,运行一个公共脚本连接到服务器并运行命令,以及定义我需要的库

我在W public js文件中有一个连接和断开连接功能,它具有以下功能:

// send join request
function joinlobby(room) {
  socket.emit("userJoined", room);
}

// emit when a player leaves
function leavelobby(room) {
  socket.emit("userLeft", room);
}

每当我在函数中创建一个新的套接字时

// emit when a player leaves
function leavelobby(room) {
  let socket = io();
  socket.emit("userLeft", room);
}

它将正确运行,但是两者都有单独的连接,这会导致问题。我试图让他们使用相同的连接有让套接字=io();放在上面的函数使用相同的套接字,但是当程序命中该行它停止运行文件没有抛出一个错误

如何使用到服务器的单个连接,和/或当我在函数之外定义套接字时,为什么程序断开连接?

为清晰起见进行编辑:问题不是希望每个客户端都有一个连接,而是每当我在每个相应的函数中定义套接字时,每个客户端都有多个连接。我的目标是只有1个连接为每个客户端但行抛出一个错误

很抱歉,我不太清楚,我不习惯在这里问问题


共有1个答案

商运锋
2023-03-14

当您创建到套接字服务器的连接时,每个客户端都将有自己的连接,如果您想向多个客户端发送一条消息,则应该使用聊天室。它非常容易使用:

io.on("connection", socket => {
  socket.join("room1");
});

如果引导客户机连接到同一房间,您将能够向该房间发送消息。

io.to("room1").emit("Hello every body");

更多信息请点击此处:https://socket.io/docs/v3/rooms/

 类似资料:
  • 在Android上也有可能实现同样的目标吗? 更新: 我找到了原因:Android推荐的http客户端不支持http/2!

  • 下面的代码片段是从JoinedStreams的javadoc复制的 这两个流仅基于一个键(通过< code>t =计算)进行连接 我会问我如何基于多个键进行连接,例如,one.a = two.a和

  • 现在我正在使用Criteria Hibernate查询从员工表中查询所有记录,它工作正常。我需要将员工表与库表联接,其中库。Emp_Id=员工。Emp_id我是否需要从员工表中获取所有记录,并从库表中获取书名和结账日期,作为联接选择查询的一部分。我该怎么做?

  • 问题内容: 我正在寻找与该答案类似的解决方案,但更安全。我想禁用证书验证,但仅针对单个请求(这是我所需要的)。因此,它应该执行以下一项或多项操作 一个请求完成后,返回安全状态 仅禁用给定URL的验证 (也许)仅将不安全设置用于一个线程 附录 我真的想知道当我要一个更安全的解决方案时,与原始问题(得分+46)相比,这个问题(得分-2)出了什么问题。 有人可以解释吗? 解释为什么我需要这样做:有一个有

  • 我正在尝试连接到LDAP以对用户进行身份验证。下面是我的代码,但是我不能使用我的C#代码设置SSL。 我从我的应用程序安全小组收到一条消息,我正在发送普通密码,所以我试图通过将身份验证类型设置为安全来保护它,通过尝试将选项设置为 但是我在连接对象中没有看到任何Sessionoption,我正在使用novel.LDAP dll进行LDAP操作。 有谁能帮帮我吗?如何在网络上以安全的方式发送密码供ld