ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

websocket-client 试用简记

2021-05-19 19:05:04  阅读:522  来源: 互联网

标签:None websocket 简记 client error print message data def


尝试重写WebSocketApp

按照个人理解,某些处理是共用的,因此定义ws默认的on_error,on_close,on_ping,on_pong
就目前使用on_message,on_open所作的处理可能会有不同。

class MyWebsocket(websocket.WebSocketApp):
	url="ws://" # websocket url
	def on_error(mw, error):
	    print(error)
	    print("!!!!!!!!!发生未知错误!!!!!!!!!\n关闭连接........\n")
	    mw.close()

	def on_close(mw):
		print("===== closed =======\n")

	def on_ping(mw,message):
	    print("Got a Ping:")
	    print(message)

	def on_pong(mw,message):
	    print("Got a Pong:")
	    print(message)

	def on_data(ws,message,datatype,continueflag):
		print ("D >>> "+str(len(message))+" "+message)

	def __init__(self,url=url,on_error=on_error,on_close=on_close,on_pong=on_pong,on_ping=on_ping, header=None,
		on_open=None, on_message=None,
		on_cont_message=None,
		keep_running=True, get_mask_key=None, cookie=None,
  		subprotocols=None,
		on_data=on_data,is_connect=0,is_sendwav=0,user_id = ""):
		websocket.WebSocketApp.__init__(self, url,on_error=on_error,on_close=on_close,on_pong=on_pong,on_ping=on_ping, header=None,
		on_open=None, on_message=None,
		on_cont_message=None,
		keep_running=True, get_mask_key=None, cookie=None,
  		subprotocols=None,
		on_data=on_data)
		self.on_message=on_message
		self.on_open=on_open
		self.is_connect = is_connect
		self.is_sendwav = is_sendwav
		self.user_id = user_id

试用:

mywebsocket = MyWebsocket(on_open=on_open,on_message=on_message)
mywebsocket.run_forever(ping_interval=60,ping_timeout=30)

Option

设置超时连接

websocket.setdefaulttimeout(5)

enabletrace

websocket.enableTrace(True)

发送文本和binary

json格式

def send_json(ws,data,operateName="test"):
	print("\n【"+operateName+"】")
	ws.send(json.dumps(data))
	pprint(data)
	set_waiting()

试用:

data={
			"user_id":"123",
			"user_name": "dolores"
		}
send_json(mywebsocket,data)

wav

def sendWAV(wav):
		print("============开始发送音频数据==================")
		step = 3200
		with open(wav, 'rb') as f:
			while True:
				read_data = f.read(step)
				if read_data:
					self.mywebsocket.send(read_data, ABNF.OPCODE_BINARY)
				if len(read_data) < step:
					break
				set_waiting(0.1)
		print("============结束发送音频数据================")
		set_waiting(10)

sendWAV("./test.wav")

接收服务器消息

on_message

def on_message(ws, message):
	print("【server message】\n"+message)
  # 服务端返回的是字符串,可按需转成json格式
	message = json.loads(message)
  print(message["id"])

on_data

def on_data(ws,message,datatype,continueflag):
  print ("D >>> "+str(len(message))+" "+message)

标签:None,websocket,简记,client,error,print,message,data,def
来源: https://www.cnblogs.com/Tester_Dolores/p/14786502.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有