websocket-client 无法外部调用发送事件

2019-01-09 22:17:20 +08:00
 smallgoogle

A 内容

# -*- coding:utf-8 -*-
import websocket 
import requests
import re
import json
import time


def on_message(ws, message):  # 服务器有数据更新时,主动推送过来的数据
    # message = json.loads(message)
    print(message)


def on_error(ws, error):  # 程序报错时,就会触发 on_error 事件
    # print(error)
    time.sleep(10)  # 延时十秒,预防假死
    Start() # 重连


def on_close(ws):
    print("Connection closed ……")


def on_open(ws):  # 连接到服务器之后就会触发 on_open 事件,这里用于 send 数据
    # print(req)
    ws.send(1)



def Start():
    # websocket.enableTrace(True)  # 调试开启和关闭
    ws = websocket.WebSocketApp("ws://192.168.31.100:9393", on_message=on_message, on_error=on_error, on_close=on_close)
    ws.on_open = on_open
    ws.run_forever(ping_timeout=30)


if __name__ == "__main__":
    Start()

我的 websocket 客户端代码是酱紫的;
那么问题来了,比如是有一另外一个 py 叫 B;
我如何在 B 里面调用 A 的 websocket 发送内容?

ws.send('字符串') 是发送内容;
我如何在外部进行调用 然后发送呢?
因为我只想在我需要的时候主动发送某些内容给服务器;
而不是一直等待 on_message 的响应后才发送;

2219 次点击
所在节点    Python
7 条回复
E520
2019-01-10 11:23:07 +08:00
# -*- coding:utf-8 -*-
import websocket
import requests
import re
import json
import time,threading


def on_message(ws, message): # 服务器有数据更新时,主动推送过来的数据
# message = json.loads(message)
print(message)


def on_error(ws, error): # 程序报错时,就会触发 on_error 事件
# print(error)
time.sleep(10) # 延时十秒,预防假死
Start() # 重连


def on_close(ws):
print("Connection closed ……")


def on_open(ws): # 连接到服务器之后就会触发 on_open 事件,这里用于 send 数据
# print(req)
ws.send(1)

def get_msg():
return '内容'

def send_msg(ws):
msg=get_msg()
ws.send(msg)



def Start():
# websocket.enableTrace(True) # 调试开启和关闭
ws = websocket.WebSocketApp("ws://192.168.31.100:9393", on_message=on_message, on_error=on_error, on_close=on_close)
ws.on_open = on_open
threading.Thread(target=send_msg,args=(ws,)).start()
ws.run_forever(ping_timeout=30)


if __name__ == "__main__":
Start()
E520
2019-01-10 11:23:31 +08:00
加一个线程 传递 Ws 对象即可
smallgoogle
2019-01-10 13:19:24 +08:00
![]( )

@E520 大概好像不行哎。。
smallgoogle
2019-01-10 13:24:10 +08:00
@E520 不对。好像是可以的。好像是哪里有点问题。说不上来。
smallgoogle
2019-01-10 13:27:06 +08:00
@E520 这加个线程,只是多了一个函数方法,可是如何调用这个方法呢?
smallgoogle
2019-01-10 13:30:44 +08:00
@E520 比如怎么调用 send_msg('字符串内容')
smallgoogle
2019-01-14 10:51:35 +08:00
@E520 前辈你别消失了啊。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/525523

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX