2013-07-29 16 views
3

所以我試圖在brython中使用websockets,一個python3的JavaScript實現。不幸的是,我沒有太多運氣。如何在brython中創建一個websocket JSObject?

根據文檔,函數JSObject()可以用來操縱brython中的JS對象,但是我在websockets中沒有任何運氣。我試圖用echoserver測試它:http://www.websocket.org/echo.html(當我使用javascript代碼時,它工作正常)。

ws = JSObject(WebSocket("ws://echo.websocket.org/"))也沒有ws = JSObject(new WebSocket("ws://echo.websocket.org/"))似乎工作。

我發現文件py_websocket.js作爲brython的「網站鏡像」下載的一部分,但仍然無法實現它。

我不確定這是不是執行,或者如果我錯過了使用brython的JSObject()一個重要的概念。

回答

4

下面是使用一個例子內置websocket()功能,包含在py_websocket,並且服務器echo.websocket.org:

<html> 
<head> 
<meta charset="iso-8859-1"> 
<script src="/src/brython.js"></script> 

<script type="text/python3"> 
def on_open(): 
    # Web Socket is connected, send data using send() 
    data = doc["data"].value 
    if data: 
     ws.send(data) 
     alert("Message is sent") 

def on_message(evt): 
    # message received from server 
    alert("Message received : %s" %evt.data) 

def on_close(evt): 
    # websocket is closed 
    alert("Connection is closed") 

ws = None 
def _test(): 
    global ws 
    # open a web socket 
    ws = websocket("wss://echo.websocket.org") 
    # attach functions to web sockets events 
    ws.on_open = on_open 
    ws.on_message = on_message 
    ws.on_close= on_close 

def close_connection(): 
    ws.close() 
</script> 
</head> 
<body onload="brython(1)"> 
<input id="data"> 
<button onclick="_test()">Run WebSocket</button> 
<p><button onclick="close_connection()">Close connection</button> 
</body> 
</html> 

代碼應該是不言自明。 Brython網站需要填寫更多關於網絡套接字的文檔

+0

謝謝,這完全回答了我的問題。我沒有意識到有一個內置的websocket函數 - 我無法在文檔中找到它。 – Paul

相關問題