Python实现
组件(客户端)使用websocket-client实现。
服务端测试使用websockets实现。
WebSocket定时接收
组件连接顺序如图所示,webinput weboutput 和前面板文本组件用来测试组件的输入输出:
由于该组件为自动接收数据组件,会定时触发从websocket服务端接收数据,可以直接从前面板观察数据变化情况,如图所示:
服务端的情况如图所示:
服务端示例代码(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 和前面板文本组件用来测试组件的输入输出:
由于该组件为发送数据组件,会发从webinput组件拿到数据发送至websocket服务端,返回一个表示是否发送成功的json,如图所示:
服务端的情况如图所示:
服务端示例代码(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 和前面板文本组件用来测试组件的输入输出:
由于该组件为发送文件组件,会发从webinput组件拿到文件地址并将二进制文件发送至websocket服务端,返回一个表示是否发送成功的json,如图所示:
服务端的情况如图所示:
服务端示例代码(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 和前面板文本组件用来测试组件的输入输出:
由于该组件为发送接收组件,会发从webinput组件拿到数据并发送至websocket服务端,并实时监控服务端返回数据发送至前面板文本节点,如图所示:
服务端的情况如图所示:
服务端示例代码(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()