跳到主要内容

Python实现

组件(客户端)使用websocket-client实现。
服务端测试使用websockets实现。

WebSocket定时接收

组件连接顺序如图所示,webinput weboutput 和前面板文本组件用来测试组件的输入输出: image.png 由于该组件为自动接收数据组件,会定时触发从websocket服务端接收数据,可以直接从前面板观察数据变化情况,如图所示: image.png 服务端的情况如图所示: image.png 服务端示例代码(Python):

import asyncio
import time
import websockets
import logging
logger = logging.getLogger('websockets.server')
logger.setLevel(logging.ERROR)
logger.addHandler(logging.StreamHandler())


async def hello(websocket, path):
count = 0
while True:

greeting = f"Hello {count}!"

await websocket.send(greeting)
print(f"> {greeting}")
count += 1
await asyncio.sleep(1)


start_server = websockets.serve(hello, "0.0.0.0", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

WebSocket发送消息

组件连接顺序如图所示,webinput weboutput 和前面板文本组件用来测试组件的输入输出: image.png 由于该组件为发送数据组件,会发从webinput组件拿到数据发送至websocket服务端,返回一个表示是否发送成功的json,如图所示: image.png 服务端的情况如图所示: image.png 服务端示例代码(Python):

import asyncio
import time
import websockets
import logging
logger = logging.getLogger('websockets.server')
logger.setLevel(logging.ERROR)
logger.addHandler(logging.StreamHandler())


async def hello(websocket, path):

while True:
name = await websocket.recv()
print(f"< {name}")

greeting = f"Hello {name}!"

await websocket.send(greeting)
print(f"> {greeting}")


start_server = websockets.serve(hello, "0.0.0.0", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

WebSocket文件发送

组件连接顺序如图所示,webinput weboutput 和前面板文本组件用来测试组件的输入输出: image.png 由于该组件为发送文件组件,会发从webinput组件拿到文件地址并将二进制文件发送至websocket服务端,返回一个表示是否发送成功的json,如图所示: image.png 服务端的情况如图所示: image.png 服务端示例代码(Python):

import asyncio
import time
import uuid
import json
import websockets
import logging
logger = logging.getLogger('websockets.server')
logger.setLevel(logging.ERROR)
logger.addHandler(logging.StreamHandler())


async def hello(websocket, path):
f = open(str(uuid.uuid1()), "wb")
count = 0
while True:
chunk = await websocket.recv()
try:
data = json.loads(chunk.decode("utf-8"))
if data["end"]:
f.close()
print("finish")
f = open(str(uuid.uuid1()), "wb")
count = 0
except Exception as e:
print("write data file")
f.write(chunk)
finally:
count += 1


start_server = websockets.serve(hello, "0.0.0.0", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

WebSocket数据发送接收

组件连接顺序如图所示,webinput weboutput 和前面板文本组件用来测试组件的输入输出: image.png 由于该组件为发送接收组件,会发从webinput组件拿到数据并发送至websocket服务端,并实时监控服务端返回数据发送至前面板文本节点,如图所示: image.png 服务端的情况如图所示: image.png 服务端示例代码(Python):

import asyncio
import time
import websockets
import logging
logger = logging.getLogger('websockets.server')
logger.setLevel(logging.ERROR)
logger.addHandler(logging.StreamHandler())


async def hello(websocket, path):

while True:
name = await websocket.recv()
print(f"< {name}")

greeting = f"Hello {name}!"

await websocket.send(greeting)
print(f"> {greeting}")


start_server = websockets.serve(hello, "0.0.0.0", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()