0

現時点では、接続ごとに uuid を生成してクライアントに渡す websocket サーバーがあり、クライアント側では、すべての接続で単純なリストを更新します。元の接続のリストが更新されていることを確認したいのですが、私が何を意味するのかを説明しましょう:

  1. タブを開く - 最初のクライアントが接続し、リストに自分の uuid が表示される
  2. 新しいタブを開き、websocket に接続すると、以前に接続した ID と新しい ID が表示されます
  3. ここで、タブ 1 に戻ると、両方の接続は表示されず、最初の接続のみが表示されます。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 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>");
        });

(そしてもちろん: <ul id="players"></ul>)

4

1 に答える 1