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

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 閱讀(1240) 評論(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>
            日韩香蕉视频| 欧美96在线丨欧| 久久精品毛片| 亚洲男女自偷自拍| 久久嫩草精品久久久精品一| 亚洲免费在线播放| 欧美一级视频一区二区| 午夜国产精品视频| 欧美与欧洲交xxxx免费观看| 久久久一区二区| 你懂的网址国产 欧美| 欧美日韩三区| 国产酒店精品激情| 狠狠综合久久| 日韩手机在线导航| 亚洲欧美久久| 久久综合久色欧美综合狠狠 | 欧美美女bbbb| 国产精品久久波多野结衣| 国产乱人伦精品一区二区| 激情久久久久久久| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲第一页在线| 亚洲国产精品嫩草影院| 亚洲午夜成aⅴ人片| 欧美资源在线| 欧美日韩国产免费观看| 国产亚洲一区在线播放| 日韩午夜激情av| 久久免费一区| 亚洲调教视频在线观看| 快射av在线播放一区| 国产精品色婷婷| 亚洲免费观看| 欧美www视频在线观看| 亚洲午夜羞羞片| 欧美精品一区二区三区四区 | 欧美+亚洲+精品+三区| 国产精品婷婷| 99热这里只有成人精品国产| 久久中文在线| 午夜精品久久久久久久99热浪潮 | 国产精品美女午夜av| 亚洲毛片av| 欧美gay视频| 久久av资源网站| 国产精品美女一区二区在线观看| 亚洲精品社区| 在线色欧美三级视频| 欧美专区在线| 中文在线不卡| 欧美日一区二区在线观看| 亚洲黑丝一区二区| 噜噜噜躁狠狠躁狠狠精品视频| 一区二区三区四区国产| 欧美国产成人在线| 亚洲国产视频一区| 免费亚洲电影在线观看| 午夜精品久久久久影视| 国产精品无人区| 亚洲专区一区| 国产精品99久久久久久www| 欧美日韩极品在线观看一区| 亚洲日本成人| 欧美韩国一区| 欧美激情精品久久久| 亚洲精品乱码久久久久久| 欧美激情综合色| 欧美+日本+国产+在线a∨观看| 亚洲国产1区| 亚洲丶国产丶欧美一区二区三区| 久久免费一区| 亚洲日本在线观看| 99re视频这里只有精品| 欧美三区在线视频| 欧美亚洲免费电影| 久久精彩视频| 亚洲欧洲日韩在线| 99热在线精品观看| 国产精品尤物福利片在线观看| 久久激情婷婷| 免费久久精品视频| 亚洲性感美女99在线| 亚洲欧美日韩电影| 在线观看亚洲视频啊啊啊啊| 亚洲国产欧美国产综合一区| 欧美三级视频在线| 久久久久国产免费免费| 免费不卡欧美自拍视频| 亚洲午夜三级在线| 欧美一区二区三区精品 | 午夜免费在线观看精品视频| 亚洲欧美日韩一区在线| 亚洲大片av| 日韩网站在线| 国产一区二区三区无遮挡| 欧美成人亚洲成人| 国产精品夫妻自拍| 麻豆精品在线观看| 国产精品高清在线观看| 麻豆成人在线| 国产精品天美传媒入口| 亚洲国产一成人久久精品| 国产精品青草久久| 亚洲第一伊人| 国内精品视频在线观看| 亚洲麻豆一区| 在线观看欧美日韩国产| 亚洲深夜影院| 亚洲精品欧美| 欧美激情视频一区二区三区免费 | 欧美日韩在线播放三区四区| 久久人人九九| 国产精品伦理| 亚洲国产一区二区a毛片| 国产午夜精品全部视频播放| 亚洲日本成人| 亚洲二区免费| 欧美在线一二三| 午夜激情综合网| 欧美激情综合色| 欧美成人第一页| 国内精品久久久| 亚洲一区二区网站| 亚洲一区二区精品在线| 欧美精品电影在线| 欧美福利专区| 亚洲国产欧美在线| 久久另类ts人妖一区二区| 久久er精品视频| 国产精品一区二区欧美| 一区二区三区四区五区视频| 亚洲免费观看高清完整版在线观看熊| 欧美专区18| 久久婷婷综合激情| 国产在线一区二区三区四区| 亚洲淫片在线视频| 午夜精品久久久久影视| 国产精品成人一区二区网站软件 | 久久久www成人免费无遮挡大片 | 久久激五月天综合精品| 久久久国产精品一区| 国产午夜精品一区理论片飘花| 亚洲伊人一本大道中文字幕| 先锋亚洲精品| 国产女主播一区二区| 亚洲欧美中文另类| 久久久久久97三级| 精品不卡一区| 鲁大师成人一区二区三区| 欧美国产一区在线| 日韩午夜av在线| 国产精品99一区| 亚洲综合精品自拍| 久久精品国产一区二区电影| 国产午夜久久| 美玉足脚交一区二区三区图片| 欧美激情黄色片| 一区二区三区久久| 国产精品网曝门| 久久尤物视频| 91久久午夜| 午夜精品久久久久久久99樱桃| 国产精品一区在线播放| 久久久91精品国产一区二区精品| 女生裸体视频一区二区三区| 亚洲欧洲美洲综合色网| 欧美日韩在线高清| 欧美一区二区视频97| 欧美成人小视频| 亚洲一区在线免费观看| 亚洲精品1区2区| 欧美国产激情二区三区| 亚洲作爱视频| 久久精品99无色码中文字幕| 亚洲经典在线| 国产精品一区二区三区久久| 久久天天狠狠| 一区二区三区高清在线| 久久久人人人| 一区二区三区高清不卡| 国内精品久久久久久| 欧美黄在线观看| 欧美一级久久久| 亚洲毛片在线| 免费日韩av片| 欧美亚洲一区二区在线| 亚洲精品美女91| 国产亚洲综合性久久久影院| 欧美美女视频| 久久亚洲二区| 午夜亚洲视频| 99re热这里只有精品免费视频| 免费日韩av片| 久久久亚洲国产天美传媒修理工| 在线亚洲欧美| 亚洲精品国久久99热| 精品不卡一区二区三区| 国产欧美精品xxxx另类| 欧美视频成人|