簡體   English   中英

在多個客戶端之間交換Websocket連接

[英]Swap websocket connections between multiple clients

我正在嘗試監視兩台計算機,並將其信息顯示給網站。 在服務器中,我使用javascript websocket,兩台計算機將信息發送到服務器IP。 我想在同一頁面上監視兩台計算機的狀態,並接收10條以上的消息,交換信息以顯示。

這是我的實際代碼,但是那樣可以同時連接兩個插座。 我想用第一個IP打開一個套接字,接收10條消息,關閉連接並打開第二個IP。 收到10條IP2消息后,關閉連接,打開具有第一個IP的套接字,然后重復該過程。

最好使用node.js? 我從未使用過它,並且我不知道它的潛力。

有人可以幫我嗎?

對不起,我英語不好。

var IPs =  ['ws://localhost:9000','ws://localhost:8000']; 

while(1){
    IPs.forEach(function(IPactual){
            var socket = new WebSocket(IPactual);
            console.log(socket.readyState);
            socket.onopen = function() {
                console.log('%c Connected to ' + socket.url, "color:orange ");
            }

            socket.onclose = function() {
                console.log('%c Disconnected from ' + socket.url, "color: red");
            }

            socket.onerror = function(e) {
                console.log('%c Ooops... ' + e, "color: red");
            }

            var messages= 0;
            socket.onmessage = function(e) {
                messages++;
                console.log(messages);

                // WRITE TO HTML THE INFORAMTION RECIVED

                if (messages==10){
                    socket.onclose = function () {}; 
                    socket.close()

                }
            }

    })
}

感謝您的幫助,保持打開狀態是我這樣控制的:

$(document).ready(function () {

    var n_messages_to_show = 10;
        var messages_control = 0;

        var socket = new WebSocket('ws://localhost:9000');

        socket.onopen = function() {
            console.log('%c Connected to ' + socket.url, "color:orange ");
        }

        socket.onclose = function() {
            console.log('%c Disconnected from ' + socket.url, "color: red");
        }

        socket.onerror = function(e) {
            console.log('%c Ooops... ' + e, "color: red");
        }

        var connections = 0;
        socket.onmessage = function(e) {
            if (messages_control<n_messages_to_show){
                console.log('%c Sending TAD1 monitor information ','background:lightgreen ; color: black');
                messages_control++;
                post_to_web(e);
            }
        }


        var socket2 = new WebSocket('ws://localhost:8000');

        socket2.onopen = function() {
            console.log('%c Connected to ' + socket2.url, "color:orange ");
        }

        socket2.onclose = function() {
            console.log('%c Disconnected from ' + socket2.url, "color: red");
        }

        socket2.onerror = function(e) {
            console.log('%c Ooops... ' + e, "color: red");
        }

        var connections = 0;
        socket2.onmessage = function(e) {
            if (messages_control>n_messages_to_show){
                console.log('%c Sending TAD2 monitor information ','background:lightgreen ; color: black');
                messages_control++;
                post_to_web(e);
            }
            if(messages_control==n_messages_to_show*2){
                messages_control=0;
            }
        }


    post_to_web = function(e){
         //############################################
         //              POST TO WEB
         //############################################
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM