青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Benjamin

靜以修身,儉以養德,非澹薄無以明志,非寧靜無以致遠。
隨筆 - 398, 文章 - 0, 評論 - 196, 引用 - 0
數據加載中……

python在tornado下websocket客戶端

from tornado import httpclient
from tornado import ioloop
from tornado import websocket
import uuid
import binascii
import struct
import weakref
DEFAULT_CONNECT_TIMEOUT = 60
DEFAULT_REQUEST_TIMEOUT = 60
def my_unpack(message1, length,ag_client):
    """解包"""
    message = message1[length:len(message1)]
    # 獲取cmd
    cmd, = struct.unpack('!i', message[0:4])
    # 獲取長度
    size, = struct.unpack('!i', message[4:8])
    if size!=len(message):
        print('接收字節長度=%d' % (len(message)))
        print('包頭中包長度=%d' % size)
        print('cmd=====%d'%cmd)
    #包頭中的長度比包長度大,丟棄,不完整包
    if size >len(message):
        print('壞包丟棄')
        return
    # 包內容
    string, = struct.unpack('!{0}s'.format(size - 4), message[4:size])
    from protocol.deserialize import ag_parse
    ag_parse(cmd, string, ag_client)
    length += size
    if len(message) > size:
        my_unpack(message1, length,ag_client)
class WebSocketClient(object):
    """Base for web socket clients.
    """
    def __init__(self, *, connect_timeout = DEFAULT_CONNECT_TIMEOUT,
                          request_timeout = DEFAULT_REQUEST_TIMEOUT,
                          name = login_name,
                          passwd = login_password,
                          player = None):
        self.connect_timeout = connect_timeout
        self.request_timeout = request_timeout
        #玩家登陸名
        self.player_name = name
        #玩家登陸passwd
        self.player_passwd = passwd
        #玩家數據
        if player:
            self.player = weakref.proxy(player)
        else:
            self.player = None
    def connect(self, url):
        """Connect to the server.
        :param str url: server URL.
        """
        request = httpclient.HTTPRequest(url=url,
                                         connect_timeout=self.connect_timeout,
                                         request_timeout=self.request_timeout)
        ws_conn = websocket.WebSocketClientConnection(request,ioloop.IOLoop.current())
        ws_conn.connect_future.add_done_callback(self._connect_callback)
        ws_conn.on_message=self._on_message
        ws_conn.on_connection_close=self._on_connection_close
    def send(self, data):
        """Send message to the server
        :param str data: message.
        """
        if not self._ws_connection:
            raise RuntimeError('Web socket connection is closed.')
        self._ws_connection.write_message(data,True)
    def close(self):
        """Close connection.
        """
        if not self._ws_connection:
            raise RuntimeError('Web socket connection is already closed.')
        self._ws_connection.close()
    def _connect_callback(self, future):
        if future.exception() is None:
            self._ws_connection = future.result()
            self._on_connection_success()
        else:
            self._on_connection_error(future.exception())
    def _on_message(self, msg):
        """This is called when new message is available from the server.
        :param str msg: server message.
        """
        pass
    def _on_connection_success(self):
        """This is called on successful connection ot the server.
        """
        pass
    def _on_connection_close(self):
        """This is called when server closed the connection.
        """
        pass
    def _on_connection_error(self, exception):
        """This is called in case if connection to the server could
        not established.
        """
        pass
    def bind(self,player):
        pass
class AppWebSocketClient(WebSocketClient):
    def _on_message(self, msg):
        my_unpack(msg, 0, self)
    def _on_connection_success(self):
        print('Connected!')
        self.bind(self.player)
        def intToBytes(value, length):
            resu = []
            for i in range(0, length):
                resu.append(value >> (i * 8) & 0xff)
            resu.reverse()
            return resu
        login_pack = packet_pb2.PK_CLIENT_LOGIN()
        #用戶名
         login_pack.loginname = self.player_name
     
        #密碼
        curr_password = self.player_passwd
        login_pack.devicetype = 1
        result = []
        temp = b''
        for i in range(0, len(curr_password), 2):
            result.append(binascii.unhexlify(curr_password[i:i + 2]))
            temp += (binascii.unhexlify(curr_password[i:i + 2]))
        login_pack.token = temp
        # 序列化
        serializeToString = login_pack.SerializeToString()
        print(serializeToString, type(serializeToString))
        args = (704, len(serializeToString), 0, 1, 1, serializeToString)
        fmt = ">iiihh{0}s".format(len(serializeToString))
        data = struct.pack(fmt, *args)
        self.send(data)
    def _on_connection_close(self):
        print('Connection closed!')
        self._ws_connection.tcp_client.close()
        print('關閉socket,重新連接')
        # self.connect(ag_url)
    def _on_connection_error(self, exception):
        print('Connection error: %s', exception)
    def bind(self,player):
        """綁定ag的wss連接"""
        if player:
            if player.ag_wss:
                player.ag_wss.close()
            self.player.ag_wss = self
            print('!!!!!!綁定到ag完成!!!!!!')
def player_client(name,passwd,table_id,player):
    """玩家登陸創建客戶端"""
    if name:
        if passwd:
            if table_id > 0xFFFE:
                if player:
                    client = AppWebSocketClient(connect_timeout=DEFAULT_CONNECT_TIMEOUT,
                                                request_timeout=DEFAULT_REQUEST_TIMEOUT,
                                                name=name,
                                                passwd=passwd,
                                                player= player)
                    client.connect(ag_url)

posted on 2020-01-03 19:41 Benjamin 閱讀(1247) 評論(0)  編輯 收藏 引用 所屬分類: python

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品99无色码中文字幕| 久久久成人精品| 99精品国产热久久91蜜凸| 欧美v亚洲v综合ⅴ国产v| 亚洲日本在线观看| 亚洲激情欧美| 欧美日韩亚洲天堂| 亚洲在线电影| 欧美在线观看你懂的| 狠狠色2019综合网| 欧美激情亚洲综合一区| 欧美日韩第一区| 欧美在线观看www| 久久男女视频| 中国女人久久久| 欧美亚洲专区| 亚洲理伦电影| 在线一区二区日韩| 伊人春色精品| 日韩一级免费| 激情久久五月| av成人免费在线观看| 国产亚洲精品v| 亚洲国产专区校园欧美| 国产欧美欧美| 亚洲破处大片| 国产一区导航| 亚洲精品乱码久久久久久久久| 欧美午夜精品| 欧美成人午夜激情视频| 国产精品成人av性教育| 噜噜噜噜噜久久久久久91| 欧美猛交免费看| 久久夜色精品亚洲噜噜国产mv| 欧美久久在线| 美女尤物久久精品| 国产精品久久久久av免费| 欧美aaa级| 国产视频在线观看一区二区| 最近中文字幕日韩精品| 国产视频精品xxxx| 一本大道久久a久久精二百| 狠狠色狠狠色综合日日五| 一区二区三区不卡视频在线观看| 樱桃国产成人精品视频| 亚洲免费视频观看| 亚洲午夜精品一区二区三区他趣| 老鸭窝91久久精品色噜噜导演| 欧美在线视频免费| 国产精品免费看久久久香蕉| 亚洲国产欧美日韩| 亚洲国产精品免费| 久久国产精品99久久久久久老狼| 午夜电影亚洲| 国产精品第2页| 亚洲免费电影在线观看| 亚洲人成毛片在线播放女女| 久久精彩视频| 鲁大师影院一区二区三区| 国产精品无码专区在线观看| 99精品欧美一区二区蜜桃免费| 亚洲日本欧美| 欧美黄色网络| 亚洲理论在线| 一区二区三区免费在线观看| 欧美人交a欧美精品| 亚洲国产女人aaa毛片在线| 亚洲欧洲精品一区二区三区不卡| 久久综合亚州| 亚洲国产日韩欧美在线图片| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产欧美日韩91| 亚洲午夜精品久久| 先锋影音网一区二区| 国产精品一区免费视频| 新67194成人永久网站| 欧美在线高清视频| 又紧又大又爽精品一区二区| 久久九九久久九九| 亚洲国产成人久久| 99一区二区| 国产精品萝li| 久久国产精品久久久久久| 久久婷婷国产综合国色天香| 亚洲第一福利视频| 欧美精品色综合| 亚洲一区二区三区三| 久久国产一区二区三区| 禁久久精品乱码| 蜜桃av综合| 宅男精品导航| 免费久久99精品国产自| 99国产精品99久久久久久| 欧美日韩亚洲一区二区三区| 亚洲一区二区av电影| 久久一区中文字幕| 日韩亚洲欧美一区| 国产精品日本精品| 老司机免费视频久久| 亚洲精品一区二区三区在线观看 | 一区二区三区视频在线看| 国产精品久久毛片a| 久久国产精品久久久久久电车| 欧美福利小视频| 欧美一区2区三区4区公司二百| 1024欧美极品| 国产精品亚洲一区二区三区在线| 麻豆精品精华液| 亚洲欧美一区二区三区在线| 欧美国产成人精品| 欧美在线三级| 一区二区国产在线观看| 激情视频一区二区| 国产精品二区在线| 欧美成人蜜桃| 久久精品首页| 午夜日韩在线| 一区二区电影免费观看| 免费黄网站欧美| 久久av红桃一区二区小说| 亚洲最新色图| 亚洲福利视频网站| 国产一区二区三区久久精品| 欧美日韩国产在线一区| 免费成人网www| 久久大逼视频| 亚洲男人天堂2024| 99精品国产在热久久| 亚洲经典自拍| 欧美成人免费全部观看天天性色| 欧美一区二区在线视频| 亚洲视频中文字幕| 99国产精品久久久久久久久久| 精品二区视频| 一区二区三区在线视频播放| 国产欧美激情| 国产一级一区二区| 国产亚洲亚洲| 黄色日韩网站视频| 国产午夜精品福利| 国产有码一区二区| 国产日韩欧美在线一区| 国产欧美日韩一区二区三区| 国产精品嫩草影院av蜜臀| 欧美日韩精品欧美日韩精品 | 久久米奇亚洲| 久久综合影视| 免费中文字幕日韩欧美| 久久综合国产精品| 美女网站久久| 欧美片在线播放| 国产精品久久久久久久久免费 | 欧美日韩免费一区| 欧美理论电影在线播放| 欧美日韩高清免费| 国产精品免费一区二区三区在线观看| 欧美午夜剧场| 国产伦精品一区二区三区视频孕妇 | 日韩一级不卡| 亚洲男女毛片无遮挡| 性色av一区二区三区红粉影视| 午夜亚洲福利| 久久精品一本| 亚洲第一黄色| 亚洲五月婷婷| 久久精品国内一区二区三区| 久久视频在线视频| 欧美啪啪一区| 国产一区二区三区日韩欧美| 亚洲第一搞黄网站| 在线亚洲高清视频| 欧美在线精品免播放器视频| 久热精品视频在线免费观看 | 久久色中文字幕| 亚洲丶国产丶欧美一区二区三区 | 欧美一区二区精品| 欧美成人免费网| 在线视频日韩| 久久综合免费视频影院| 欧美日韩在线观看一区二区| 国产精品永久入口久久久| 亚洲国产精品成人精品| 在线综合亚洲欧美在线视频| 久久精品最新地址| 亚洲日本黄色| 久久精品久久99精品久久| 欧美精品www| 国内精品久久久久久久果冻传媒| 日韩视频中文| 快射av在线播放一区| 999亚洲国产精| 久久综合九色99| 国产日本欧美一区二区| 日韩一级精品视频在线观看| 久久精品免费看| 宅男精品导航| 欧美人成在线| 亚洲人久久久| 免费影视亚洲| 欧美在线免费视屏|