【发布时间】:2022-01-17 01:05:52
【问题描述】:
我正在使用 socket.io 和 node.js 制作一个实时多人游戏,我有一个 html 文件,它运行一个公共脚本以连接到服务器并运行命令,以及定义我需要的库
<script src="https://code.jquery.com/jquery-2.2.2.min.js"></script>
我在具有以下功能的公共 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);
}
它会正常运行,但是如果两者都有单独的连接,则会导致问题。我试图通过将let socket = io(); 放在函数上方以使用相同的套接字来让它们使用相同的连接,但是当程序到达该行时,它会停止运行文件而不会引发错误
我如何使用单个连接到服务器,和/或为什么当我在函数外部定义套接字时程序会断开连接?
为清楚起见进行编辑: 问题不在于每个客户端都需要一个连接,而是每当我在每个相应的函数中定义套接字时,每个客户端都有多个连接。我的目标是每个客户端只有 1 个连接,但该行会引发错误
我很抱歉模棱两可,我是新来这里提问的人
【问题讨论】:
标签: javascript node.js socket.io