2013-10-02 6 views
0

Я новичок в websocket, используя pywebsocket, в основном пытаюсь создать простое приложение для чата с помощью websocket и pywebsocket. До сих пор я не буду делать с следующий сценарийСоедините двух клиентов в websocket с PyWebSocket

if ("WebSocket" in window) 
    { 
    //alert("WebSocket is supported by your Browser!"); 
    // Let us open a web socket 
    var ws = new WebSocket("ws://192.168.1.3:9998/echo"); 
    ws.onopen = function() 
    { 
     // Web Socket is connected, send data using send() 
     console.log("Channel opened"); 
     //ws.send("Message to send"); 
     //alert("Message is sent..."); 
     //console.log("Message is sent..."); 
    }; 
    ws.onmessage = function (evt) 
    { 
     var received_msg = evt.data; 
     //alert("Message is received..."+received_msg); 
     console.log("message : "+received_msg); 
    }; 
    ws.onclose = function() 
    { 
     // websocket is closed. 
     //alert("Connection is closed..."); 
     console.log("connection closed"); 
    }; 
    } 
    else 
    { 
    // The browser doesn't support WebSocket 
    alert("WebSocket NOT supported by your Browser!"); 
    } 

    function sendmessage(){ 
    msg=document.getElementById("chat").value; 
    console.log(msg); 
    ws.send(msg); 
    document.getElementById("chat").value=""; 
    } 

Теперь проблема заключается в сообщения, отправленные эхом в самой системе, если другой клиент подключиться к тому же каналу его сообщения вторил себе, они отправляются другому клиенту, который подключен к одному каналу.

pywebsocket инициализируется следующим питона standalone.py -p 9998 -w ../example/

Итак, как я могу соединить две системы и разрешить чат. Заранее спасибо

+0

похоже, что вы не храните список соединений в любом месте. Вы отправляете данные в одно и то же соединение. Некоторые py-коды могут быть полезными, но в основном вам нужно поддерживать все соединения в каком-то месте и отвечать на каждый – cox

ответ

0

Не уверен, но если вы хотите транслировать любое полученное сообщение (отправленное любым подключенным клиентом) всем другим подключенным клиентам, это не «эхо», а «трансляция».

Адрес example using AutobahnPython.

Раскрытие информации: Я являюсь оригинальным автором Autobahn и работаю в Tavendo.

Смежные вопросы