Tornado'nun sunucu hizmetleri ile ilgili bir sürü örnek var ama istemci
olarak hele hele WebSocket için neredeyse hiçbir örnek bulamadım
internette, onun için buraya yazalım dursun, bir gün birine lazım olur.
from tornado import websocket, ioloop, gen, escape
class SocketClient():
def __init__(self):
self.headers = httputil.HTTPHeaders()
self.headers['Content-Type'] = 'application/json'
self.request = httpclient.HTTPRequest(
url = "wss://some.url",
validate_cert = False,
client_key = "client-key.pem",
client_cert = "client-cert.pem",
connect_timeout = 60,
request_timeout = 60)
def connect(self, connCallback, msgCallback):
self.request.headers = self.headers
self.__msgcallback = msgCallback
self.__conncallback = connCallback
wssConn = websocket.WebSocketClientConnection(ioloop.IOLoop.current(), self.request)
wssConn.connect_future.add_done_callback(self.__on_connResult)
def __on_connResult(self, conn):
if conn.exception() == None:
self.__wssConn = conn.result()
self.__conncallback(True)
self.__read()
else:
print(conn.exception().args)
self.__conncallback(False)
def send(self, data):
self.__wssConn.write_message(escape.utf8(json.dumps(data)))
@gen.coroutine
def __read(self):
while True:
msg = yield self.__wssConn.read_message()
if msg is None:
self.__conncallback(False)
break
self.__msgcallback(msg)
Hiç yorum yok:
Yorum Gönder