リアルタイム Web アプリケーションを構築しています。
sockjsを使用して、クライアントを接続し、サーバーからそれぞれに異なるメッセージを識別して送信したいだけです
これまでに達成したことは、ブラウザーから接続して、同じサーバーに応答したというメッセージを送信することです。
現在のコード
サーバー.py
# -*- coding: utf-8 -*-
from sockjs.tornado import SockJSRouter, SockJSConnection
from tornado import web, ioloop
class ConnectionHandler(SockJSConnection):
def on_open(self, info):
print 'new connection'
def on_message(self, msg):
print str("server receives: %s" % msg)
self.send(u"server responds: %s" % msg)
if __name__ == "__main__":
onopen = SockJSRouter(ConnectionHandler, r"/websocket")
application = web.Application(onopen.urls)
application.listen(8686)
ioloop.IOLoop.instance().start()
client.html
<!DOCTYPE html>
<html>
<head>
<title>SockJS</title>
</head>
<script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>
<script>
con = new SockJS('http://localhost:8686/websocket');
con.onmessage = function(evt){
x = document.createElement("p");
x.innerHTML = evt.data;
document.getElementById("msgbox").appendChild(x);
}
function DispatchText(){
var userInput = document.getElementById("message").value;
document.getElementById("message").value = "";
x = document.createElement("p");
x.innerHTML = "message sent: " + userInput;
document.getElementById("msgbox").appendChild(x);
con.send(userInput);
}
</script>
<body>
<p style="width: 800px">Use form to communicate with the server.</p>
<div id="msgbox" style="font-size: 14pt; height: 500px; width: 800px; overflow: scroll; border: 1px solid black"></div>
<form id="communication" onsubmit="DispatchText()" action="javascript:void(0);">
<input type="text" id="message" name="message" autocomplete="off" style="width:700px" />
<input type="submit" id="sub" name="sub" value="send" style="width:90px" />
</form>
</body>
</html>
問題
各クライアントを識別する方法は?
接続されているすべてのクライアントのうち、単一のクライアントにメッセージを送信するように?