长连接调用方式

 

    ws = websocket.WebSocketApp("ws://echo.websocket.org/",
                              on_message = on_message,
                              on_error = on_error,
                              on_close = on_close)
    ws.on_open = on_open
    ws.run_forever()

 

ws.run_forever(ping_interval=60,ping_timeout=5)

#ping_interval心跳发送间隔时间

#ping_timeout 设置,发送ping到收到pong的超时时间

(5)on_error:这几个目的在遇到错误时调用,有八个参数,第叁个是此类本人,第一个是特别对象。

(9)keep_running:二个二进制的标记位,假若为True,这一个app的主循环将持续运行,暗许值为True。

ping_interval:自动发送“ping”命令,各个钦命的大运(秒),借使设置为0,则不会活动发送。

(4)on_message:那么些指标在收取到服务器再次来到的消息时调用。有七个参数,四个是此类自己,一个是我们从服务器获取的字符串(utf-8格式卡塔 尔(英语:State of Qatar)。

 

我们看源代码,会意识这么意气风发断代码:

 假如持续开关闭websocket连接,会直接不通下去。其它那个函数带四个参数,假使传的话,运转心跳包发送。

长连接重要措施:ws.run_forever(ping_interval=60,ping_timeout=5)

python
websocket

(2卡塔 尔(阿拉伯语:قطر‎header:
客商发送websocket握手央求的乞求头,{‘head1:value1′,’head2:value2’}。

        if not ping_timeout or ping_timeout <= 0:
            ping_timeout = None
        if ping_timeout and ping_interval and ping_interval <= ping_timeout:
            raise WebSocketException("Ensure ping_interval > ping_timeout")

示例2:

 

 

import websocket
from threading import Thread
import time
import sys


class MyApp(websocket.WebSocketApp):
    def on_message(self, message):
        print(message)

    def on_error(self, error):
        print(error)

    def on_close(self):
        print("### closed ###")

    def on_open(self):
        def run(*args):
            for i in range(3):
                # send the message, then wait
                # so thread doesn't exit and socket
                # isn't closed
                self.send("Hello %d" % i)
                time.sleep(1)

            time.sleep(1)
            self.close()
            print("Thread terminating...")

        Thread(target=run).start()


if __name__ == "__main__":
    websocket.enableTrace(True)
    if len(sys.argv) < 2:
        host = "ws://echo.websocket.org/"
    else:
        host = sys.argv[1]
    ws = MyApp(host)
    ws.run_forever()

(6)on_close:在遇见一而再关闭的情况时调用,参数唯有二个,便是此类本身。

安装

(1)url:
websocket的地址。

pip install websocket-client

 

先来看一下,长连接调用方式:

示例1:

from websocket import create_connection
ws = create_connection("ws://echo.websocket.org/")
print("Sending 'Hello, World'...")
ws.send("Hello, World")
print("Sent")
print("Receiving...")
result =  ws.recv()
print("Received '%s'" % result)
ws.close()

ping的晚点时间,要压倒ping间距时间

——

 

 

(3)on_open:在确立Websocket握手时调用的可调用对象,那个艺术唯有叁个参数,就是此类本人。

 

 

 

 

 长连接,参数介绍:

(7)on_cont_message:这几个指标在收受到接二连三帧数据时被调用,有多少个参数,分别是:类自个儿,从服务器接纳的字符串(utf-8卡塔 尔(英语:State of Qatar),一连标识。

ping_timeout:若无吸收pong音信,则为超时(秒)。

 

 

 

(11卡塔 尔(阿拉伯语:قطر‎subprotocols:意气风发组可用的子合同,默认为空。

短连接:

import websocket
try:
    import thread
except ImportError:
    import _thread as thread
import time

def on_message(ws, message):
    print(message)

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")


def on_open(ws):
    def run(*args):
        ws.send("hello1")
        time.sleep(1)
        ws.close()
    thread.start_new_thread(run,())

if __name__ == "__main__":
    websocket.enableTrace(True)
    ws = websocket.WebSocketApp("ws://echo.websocket.org/",
                              on_message = on_message,
                              on_error = on_error,
                              on_close = on_close)
    ws.on_open = on_open
    ws.run_forever(ping_interval=60,ping_timeout=5)

 

(8)on_data:当从服务器收到到音信时被调用,有三个参数,分别是:该类自身,选用到的字符串(utf-8卡塔 尔(英语:State of Qatar),数据类型,连续标记。

(10)get_mask_key:用于产生一个掩码。

长连接:

相关文章