Javascript socket.io已连接客户端的刷新列表
目前,我有一个websocket服务器,它为每个连接生成一个uuid并将其传递到客户端,在客户端,我更新了一个包含所有连接的简单列表。我希望看到原始connaction的列表刷新,让我来说明我的意思:Javascript socket.io已连接客户端的刷新列表,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,目前,我有一个websocket服务器,它为每个连接生成一个uuid并将其传递到客户端,在客户端,我更新了一个包含所有连接的简单列表。我希望看到原始connaction的列表刷新,让我来说明我的意思: 打开一个选项卡-第一个客户端连接,我在屏幕上看到我的uuid 名单 我打开一个新选项卡,连接到websocket,我看到 以前连接的ID和新ID 现在,当我回到tab 我没有看到两个连接,只有第一个连接。 如何刷新此列表,使websocket 建立连接后,将刷新所有用户的uuid列表 连接的客户端
var http = require("http"), io = require("socket.io"), uuid = require ("node-uuid");
var connectedPlayers = new Array();
var server = http.createServer(function(req, res) {
// Send HTML headers and message
res.writeHead(200,{ "Content-Type": "text/html" });
res.end("<h1>Server is ready & listening</h1>");
});
server.listen(1222, "1.1.1.1");
var socket = io.listen(server);
socket.set('log level', 0);
socket.on("connection", function(client) {
client.on("connection", function(){
console.log("Client connected.");
});
client.on("disconnect",function(client){
//connected--;
console.log("Client disconnected.");
});
client.userid = uuid();
console.log(client.userid);
connectedPlayers.push(client.userid);
client.emit("onconnected", {playersId: connectedPlayers});
});
var http=require(“http”)、io=require(“socket.io”)、uuid=require(“节点uuid”);
var connectedPlayers=新数组();
var server=http.createServer(函数(req,res){
//发送HTML标题和消息
res.writeHead(200,{“内容类型”:“text/html”});
res.end(“服务器已准备就绪并正在侦听”);
});
服务器监听(1222,“1.1.1.1”);
var socket=io.listen(服务器);
socket.set('日志级别',0);
socket.on(“连接”,函数(客户端){
client.on(“连接”,函数(){
log(“客户端已连接”);
});
打开(“断开”),功能(客户端){
//连接--;
log(“客户端已断开连接”);
});
client.userid=uuid();
console.log(client.userid);
connectedPlayers.push(client.userid);
emit(“onconnected”,{playersId:connectedPlayers});
});
客户:
var socket = io.connect("1.1.1.1:1222");
console.log(socket);
socket.on("connect",function() {
console.log("Client has connected to the server");
});
socket.on("disconnect",function() {
console.log("The client has disconnected from the server");
});
socket.on("error", function(message) {
console.log("It is not possible to connect to the server: " + message);
});
socket.on("onconnected", function(data) {
for (var i = 0; i < data.playersId.length; i++)
$("#players").append("<li>" + data.playersId[i] + "</li>");
});
var socket=io.connect(“1.1.1.1:1222”);
控制台日志(套接字);
socket.on(“连接”,函数(){
log(“客户端已连接到服务器”);
});
socket.on(“断开”,函数(){
log(“客户端已断开与服务器的连接”);
});
socket.on(“错误”,函数(消息){
log(“无法连接到服务器:+消息”);
});
socket.on(“未连接”,函数(数据){
对于(变量i=0;i”+data.playersId[i]+“”);
});
(当然:
)您需要使用“io.sockets.emit”而不是“client.emit”发出事件
将服务器脚本中的最后一行更改为:
client.emit("onconnected", {playersId: connectedPlayers});
致:
要在列表中添加值,我的方式如下所示:
socket.on("onconnected", function(data) {
var tmp = document.getElementById("players");
for (var i in data.playersId)
tmp.innerHTML += "<li>" + data.playersId[i] + "</li>";
});
socket.on(“未连接”),函数(数据){
var tmp=document.getElementById(“玩家”);
for(data.playersId中的变量i)
tmp.innerHTML++=“”+data.playerId[i]+“ ”;
});
将client.emit更改为socket.emit或广播(),我已更改为socket.emit(),但我的客户端似乎没有接收到任何内容,客户端从未调用过“onconnected”函数。我想我缺少了一些内容:index.js:26 io.sockets.emit(“onconnected”,{playersId:connectedPlayers});^TypeError:无法调用UndefinedTery的方法'emit'更改` socket.on(“连接”,函数(客户机){`用于io.sockets.on(“连接”,函数(客户机){`然后我得到:无法调用undefinedoh的方法'on',我看到您使用的是'var socket=io.listen(服务器)',而我通常使用'io=io.listen(服务器)'’。然后,我认为它应该与socket.sockets.on(“连接”、…)和socket.sockets.emit(…)一起使用。希望这次可以。确实可以,谢谢Riwels。但是,它仍然不能解决我原来的问题。选项卡1的列表仍然没有更新,我想我必须强制刷新列表,对吗?
socket.on("onconnected", function(data) {
var tmp = document.getElementById("players");
for (var i in data.playersId)
tmp.innerHTML += "<li>" + data.playersId[i] + "</li>";
});