Python实现WebSocket发送数据到JavaScript实现的WebSocket接收端

DOCTYPE html>
<html>
<head>
<meta charset="utf-8"> 
<script>
var socket = new WebSocket("ws://127.0.0.1:5500");

socket.onopen = function() {
  console.log('Connected!');  
};

socket.onmessage = function(e) {
  console.log('Received from Server: ', e.data);
};  

socket.onclose = function() {
  console.log('Disconnected');  
};
script>
head>
<body>
  
body>
html>

这段JavaScript代码实现了一个简单的WebSocket客户端,用来连接ws://127.0.0.1:5500服务端。
具体逻辑如下:

  1. 使用WebSocket API创建一个WebSocket对象,指定服务端地址ws://127.0.0.1:5500
  2. 定义onopen回调处理连接打开事件,打印Connected日志
  3. 定义onmessage回调处理接收消息事件,打印接收到的消息
  4. 定义onclose回调处理连接关闭事件,打印Disconnected日志
  5. 当成功连接上服务端后,onopen回调会被触发
  6. 当接收到服务端发来的消息时,onmessage回调会被触发,并传入消息内容
  7. 如果服务端主动关闭连接,或连接发生错误断开,onclose回调会被触发
    所以,这段代码实现了一个可以连接指定 WebSocket 服务端,接收并打印服务端消息的客户端。
    当该JS代码运行在浏览器中时,如果服务端在5500端口提供WebSocket服务,则可以看到:
  8. 控制台打印Connected,表示成功连接
  9. 接收到服务端发送的消息后,会打印消息内容
  10. 如果连接断开,会打印Disconnected
    这个示例演示了如何使用JavaScript的WebSocket API编写一个基本的WebSocket客户端,包括:
  11. 连接WebSocket服务端
  12. 接收消息
  13. 处理连接事件(开启、关闭)
import websocket
import threading
import time

# WebSocket服务器地址
websocket_server_url = "ws://127.0.0.1:5500"

# 连接打开时触发
def on_open(ws):
    print("连接已打开")

# 收到消息时触发  
def on_message(ws, message):
    print("收到消息:", message)

# 发生错误时触发
def on_error(ws, error):
    print("发生错误:", error)

# 连接关闭时触发
def on_close(ws):
    print("连接已关闭")

# 开启线程定时发送消息 
def send_message(): 
    while True:
        time.sleep(5)  # 每5秒发送一次
        data = "Hello from Python WebSocket!"
        ws.send(data)
        print("发送的消息:", data)

# 打开连接  
ws = websocket.WebSocketApp(websocket_server_url, 
                            on_message = on_message,
                            on_error   = on_error,
                            on_close   = on_close)
ws.on_open = on_open
ws.run_forever()

if __name__ == "__main__": 
    # 开启线程定时发送消息 
    threading.Thread(target=send_message).start()
    
    # 运行WebSocket服务
    ws.run_forever()

这段代码实现了一个简单的WebSocket客户端,具体逻辑如下:

  1. 定义WebSocket服务器地址为ws://127.0.0.1:5500
  2. 定义4个回调函数:
  • on_open: 连接打开时触发
  • on_message: 收到消息时触发
  • on_error: 发生错误时触发
  • on_close: 连接关闭时触发
  1. 定义send_message函数,开启线程每5秒发送一条消息
  2. 实例化WebSocketApp,绑定前面定义的4个回调函数
  3. 调用on_open属性绑定连接打开事件的回调
  4. 如果是直接运行,则开启发送消息的线程
  5. 运行ws.run_forever()保持WebSocket连接
  6. 发送消息线程会定期发送消息,并在控制台打印发送的消息
  7. 当接收到服务端的消息时,on_message回调会被触发,并打印接收的消息
    所以,这个代码实现了一个可以定期发送消息给服务端,同时也可以接收服务端消息的WebSocket客户端。
    运行此代码,在控制台可以看到定期打印的发送消息,以及随机打印的接收消息。
    这个示例演示了如何使用Python编写一个基本的WebSocket客户端,包括:
  8. 连接WebSocket服务端
  9. 定期发送消息
  10. 接收服务端消息
  11. 处理连接事件

你可能感兴趣的:(Electron实践,python,websocket,javascript)