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

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>
            91久久线看在观草草青青| 狠狠色香婷婷久久亚洲精品| 久久久久久久精| 欧美性片在线观看| 亚洲免费观看| 日韩一级不卡| 欧美亚州韩日在线看免费版国语版| 亚洲精品少妇网址| 亚洲激情自拍| 国产精品影音先锋| 久久久久九九九| 免费在线看成人av| 亚洲黑丝一区二区| 亚洲视频在线看| 激情欧美一区二区| 亚洲国产精彩中文乱码av在线播放 | 亚洲风情亚aⅴ在线发布| 欧美激情四色| 欧美视频日韩视频| 久久久久久久一区二区三区| 欧美顶级艳妇交换群宴| 欧美一区三区三区高中清蜜桃| 久久久久久亚洲精品不卡4k岛国| 亚洲精品永久免费| 在线视频精品一区| 另类激情亚洲| 欧美bbbxxxxx| 欧美不卡在线视频| 欧美三级日本三级少妇99| 国内偷自视频区视频综合| 亚洲国产一二三| 在线日本高清免费不卡| 亚洲私人黄色宅男| 亚洲精品国产精品国自产观看浪潮| 你懂的国产精品| 国内久久精品| 亚洲已满18点击进入久久| 99re66热这里只有精品3直播| 国产精品视频久久一区| 欧美电影在线观看完整版| 欧美日韩在线观看一区二区| 久久欧美中文字幕| 国产精品男女猛烈高潮激情| 亚洲国产高清一区| 亚洲大胆av| 久久激情网站| 久久久久久国产精品mv| 国产精品国码视频| 亚洲香蕉视频| 欧美一区在线直播| 国产精品欧美一区喷水| 中日韩男男gay无套| 在线中文字幕一区| 欧美精品一区二区三区一线天视频| 久久久精品日韩欧美| 国产日韩欧美精品| 欧美一级视频| 欧美激情在线狂野欧美精品| 欧美激情免费观看| 亚洲国产第一| 99re成人精品视频| 欧美国产激情| 亚洲最快最全在线视频| 午夜欧美理论片| 亚洲国产裸拍裸体视频在线观看乱了| 久久久蜜桃一区二区人| 亚洲免费电影在线| 久久福利资源站| 亚洲精品免费在线播放| 日韩写真在线| 午夜精品久久久久久久久久久久久 | 性伦欧美刺激片在线观看| 亚洲综合视频网| 一区二区在线视频| 欧美日韩国产精品一区| 亚洲欧美第一页| 亚洲精品一二区| 亚洲第一视频网站| 久久久久久色| 午夜欧美大片免费观看 | 国产日韩欧美综合| 亚洲欧美另类在线观看| 亚洲激情中文1区| 欧美激情一二三区| 欧美激情精品久久久久久大尺度| 久久久www成人免费精品| 久久丁香综合五月国产三级网站| 亚洲制服欧美中文字幕中文字幕| 亚洲制服少妇| 久久麻豆一区二区| 欧美精品成人| 国产欧美日本一区二区三区| 国产精品久久久久久久久免费樱桃| 欧美激情精品久久久久久黑人| 欧美剧在线观看| 欧美精品福利在线| 国产精品综合网站| 黄色一区二区三区| 在线观看国产成人av片| 一区二区在线不卡| 国内激情久久| 精东粉嫩av免费一区二区三区| 日韩亚洲国产欧美| 99视频在线精品国自产拍免费观看| 99在线精品观看| 国产亚洲欧美中文| 国产精品红桃| 99在线精品视频| 欧美片第一页| 亚洲影视在线播放| 国模 一区 二区 三区| 欧美精品在线极品| 久久久久久免费| 美女久久网站| 国产精品嫩草影院av蜜臀| 这里只有精品电影| 91久久久一线二线三线品牌| 欧美一区二区在线看| 亚洲欧美另类中文字幕| 在线亚洲国产精品网站| 久热精品视频在线观看一区| 亚洲影院在线观看| 制服丝袜亚洲播放| 亚洲在线网站| 中文亚洲免费| 亚洲欧美国产77777| 久久动漫亚洲| 亚洲激情综合| 中文久久乱码一区二区| 亚洲视频在线观看视频| 亚洲一级二级| 一区二区福利| 亚洲激情成人| 欧美激情免费观看| 亚洲每日在线| 国产欧美日韩视频在线观看| 国产日韩精品久久久| 欧美午夜视频| 亚洲国产一区二区a毛片| 亚洲国产99| 久久久久久久综合| 国产精品视频内| 日韩一区二区福利| 国产亚洲日本欧美韩国| 亚洲国产视频一区| 9色精品在线| 亚洲精品一级| 91久久线看在观草草青青| 蜜臀va亚洲va欧美va天堂| 日韩亚洲欧美综合| 欧美一级在线视频| 亚洲欧美日本伦理| 91久久精品久久国产性色也91| 欧美亚洲视频一区二区| 欧美激情精品久久久久久变态| 欧美日韩在线三区| 亚洲精品免费网站| 蜜臀av一级做a爰片久久| 亚洲欧美激情一区| 欧美日本韩国一区| 亚洲免费电影在线观看| 9人人澡人人爽人人精品| 亚洲精品1234| 亚洲精品一区二区三区蜜桃久| 蜜桃伊人久久| 国产一区二区三区奇米久涩 | 久久久精品国产一区二区三区| 欧美—级在线免费片| 亚洲黄色高清| 久久久999国产| 黑人巨大精品欧美一区二区| 久久综合色一综合色88| 亚洲国产高潮在线观看| 亚洲第一偷拍| 最新日韩在线| 国产视频亚洲精品| 国产一区二区三区免费在线观看 | 牛牛影视久久网| 欧美在线一级视频| 欧美99久久| 欧美激情一区二区三区| 欧美激情一二三区| 久久视频国产精品免费视频在线| 一区免费观看| 亚洲欧洲日本国产| 国产综合网站| 亚洲国产裸拍裸体视频在线观看乱了中文| 老司机亚洲精品| 国产精品午夜在线| 99ri日韩精品视频| 亚洲人成高清| 欧美一区二区视频免费观看| 国产精品99久久久久久久vr| 久久婷婷人人澡人人喊人人爽| 亚洲毛片在线观看.| 国产日韩一区二区三区在线播放| 最新国产成人在线观看| 亚洲成人在线视频播放| 亚洲精品综合久久中文字幕| 久久久久国产精品www|