現時点では、接続ごとに uuid を生成してクライアントに渡す websocket サーバーがあり、クライアント側では、すべての接続で単純なリストを更新します。元の接続のリストが更新されていることを確認したいのですが、私が何を意味するのかを説明しましょう:
- タブを開く - 最初のクライアントが接続し、リストに自分の uuid が表示される
- 新しいタブを開き、websocket に接続すると、以前に接続した ID と新しい ID が表示されます
- ここで、タブ 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>
)