javascript - Socket.io 显示用户连接数
问题描述
我有一个非常简单的 socket.io 应用程序,我可以在其中看到用户何时连接到我的网站以及用户何时离开。第一个用户能够看到进入的每个人,但是第二个用户只能看到在他之后进来的人,依此类推......我希望连接的用户看到的是所有当前连接的用户
服务器.js
var io = require("socket.io")(http);
var users = [];
io.on("connection", function (socket) {
console.log("User connected", socket.id);
Some loop to see user connected I think?!
socket.on("user_connected", function (username) {
users[username] = socket.id;
console.log(users);
if (username !== 'null'){
io.emit("user_connected", username);
}
});
socket.on("send_message", function (data) {
io.emit("new_message", data);
});
socket.on("user_left", function (datan) {
io.emit("user_remove", datan);
console.log("user left", datan);
});
});
网站.html
window.onbeforeunload = function () {
io.emit("user_left", name);
};
var name = <?php echo json_encode($_SESSION['displayname']); ?>;
var bild = <?php echo json_encode($_SESSION['userpic']);?>;
var dt = new Date();
var tid = dt.getHours() + ":" + dt.getMinutes();
io.emit("user_connected", name);
sender = name;
io.on("user_connected", function (username) {
var html = "";
html += "<li data-username='" + username + "'>" + username + "</li>";
document.getElementById("users").innerHTML += html;
});
调查了这个问题,但我一个愚蠢的编码员不明白“my_room”对我的独奏是什么。对不起,奇怪的问题,我只是有点迷路
解决方案
如果要向所有人发送用户列表,请创建一个类似于用户的对象,每次用户连接时添加一条记录,然后向所有人广播。
如果有人断开连接,则首先将其从您的收藏中删除,然后仅将断开连接的用户信息发送给客户端,以便客户端可以从其列表中删除该用户。
如果您想要的只是问题总数,只需发送 io.sockets.clients().length
推荐阅读
- javascript - 使用 microsoft graph 编辑和读取 OneDrive 文件
- python - django 会话数据未保存
- html - 单击“添加指令类别”按钮后,应在表格中添加另一个指令类别
- ansible - 如果变量为真,则包含角色
- javascript - 根据另一个组件是否在 DOM 中更改我的 React 应用程序的背景颜色
- pgpool - pgpool 的自动故障转移问题
- swift - 如何从firestore中检索swiftUI中的预定义项目列表?
- ios - 如何使用swift在表格视图单元格中只单击一个按钮
- node.js - Node-oracledb TypeError:oracledb.getConnection 不是函数
- sed - 使用 sed 替换为带有特殊字符的 var