2017-06-08 4 views
0

を使ってPython用WebSocketに文字列を送信します。主に例のコードをコピーしました。この例では、別のpythonクライアントスクリプトを使用してデータを送信します(以下も同様です)。それは単に魅力のように機能し、とてもシンプルです。私はPythonでいくつかの経験を持っているが、 'ウェブ/インターネット'のものについての手がかりはないので、私が必要とするものだけです。は私が無限に実行してみましょうローカルで実行しているのpython用WebSocket(以下のコードを)持っているJavaScriptの

さて、Pythonクライアントを使用しての代わりに、私はジャバスクリプトによって、HTML文書からのメッセージを送りたいです。 Python websocketerverに1つのメッセージ(文字列)を送信するだけで、短いコードの「愚かな」コードには何か指針がありますか? pythonスクリプトは、このデータを使って異なるプロセスを実行することができます。

Pythonのサーバー:(:)作品)

from socket import * 

host = "localhost" 
port = 8089 
buf = 1024 
addr = (host,port) 

sock = socket(AF_INET,SOCK_DGRAM) 
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) 
sock.bind(addr) 

print "Websocket active." 
print "address:\t"+host+":"+str(port) 

while 1: 
    data,addr = sock.recvfrom(buf) 
    if not data: 
     print "Client has exited!" 
     break 
    else: 
     print "\nReceived message '", data,"'" 

# Close socket 
sock.close() 

Pythonクライアント(作品が、必要ではない)Javascriptのクライアントに向けた

from socket import * 

host = "localhost" 
port = 8089 
buf = 1024 
addr = (host,port) 

sock = socket(AF_INET,SOCK_DGRAM) 
def_msg = "===Enter message to send to server==="; 
print "\n",def_msg 

while (1): 
    data = raw_input('>> ') 
    if not data: 
     break 
    else: 
     if(sock.sendto(data,addr)): 
      print "Sending message '",data,"'....." 

sock.close() 

そして今...
ことができますこれほどシンプルなの? ;

var socket = new WebSocket("ws://localhost:8089"); 
socket.onopen = function() { 
    alert("alerting you"); 
    socket.send('Pingel'); 
}; 

答えて

1

あなたのPythonのサーバーは、通常のTCPサーバーを実装していますが、あなたのJSコードは、TCPの上の実際の適切なプロトコルでのWebSocketクライアントとして機能している:https://tools.ietf.org/html/rfc6455

あなたは両端が通信したい場合多分進むべき道ではないWebSocketを、明らかだhttps://github.com/dpallot/simple-websocket-server

+0

ありがとう:適切に、あなたはこのように、WebSocketのサーバを実行する必要がありますか? websocketサーバーを使用する代わりに、Python TCPサーバーに変数を渡すだけでいいですか? –

+0

@WillemvanOpstalそれはブラウザでJSのコードを実行するためにあなたの意図だ場合は、あなたが使用できるプロトコルの選択に制限されている(HTTP、HTTPS、WebSocketをまたはのWebRTC)サーバーがサポートしています、。 – robertklep

+0

それは理にかなっています。私は実際にはローカルシステム上であっても、ブラウザでJSを実行したいと思う。私はwebsocketサーバーを稼働させようとするつもりですが、それはまだありません。 –

関連する問題