http://autobahn.ws/python/websocket/programming.html
とりあえず動いた。ClientIDを指定して送信する方法を考える。
→AutobahnのWAMPでSession IDを使えばいい?
server.py
import sys from twisted.python import log from twisted.internet import reactor from autobahn.twisted.websocket import WebSocketServerFactory from autobahn.twisted.websocket import WebSocketServerProtocol import json class MyServerProtocol(WebSocketServerProtocol): def onMessage(self, payload, isBinary): ## echo back message verbatim self.sendMessage(payload, isBinary) #payload = json.dumps(obj, ensure_ascii = False).encode('utf8') #payload = s.encode('utf8') #self.sendMessage(payload, isBinary = False) def onConnect(self, request): print("Client connecting: {}".format(request.peer)) def onOpen(self): print("WebSocket connection open.") def onClose(self, wasClean, code, reason): print("WebSocket connection closed: {}".format(reason)) log.startLogging(sys.stdout) factory = WebSocketServerFactory() factory.protocol = MyServerProtocol reactor.listenTCP(8080, factory) reactor.run()
client.py
import sys from twisted.python import log from twisted.internet import reactor from autobahn.twisted.websocket import WebSocketClientFactory from autobahn.twisted.websocket import WebSocketClientProtocol class MyClientProtocol(WebSocketClientProtocol): def onOpen(self): self.sendMessage(u"Hello, world!".encode('utf8')) def onMessage(self, payload, isBinary): if isBinary: print("Binary message received: {0} bytes".format(len(payload))) else: print("Text message received: {0}".format(payload.decode('utf8'))) log.startLogging(sys.stdout) factory = WebSocketClientFactory() factory.protocol = MyClientProtocol reactor.connectTCP("127.0.0.1", 8080, factory) reactor.run()