我尝试通过python中的WebSocket asyncio作为服务器发送整数到JS websocket客户端。我已经从python端用utf8编码。但我不知道如何从js端解码值。任何建议都将非常有帮助。
它在我的网页浏览器控制台中显示如下:
来自服务器的消息Blobsize:2类型:“"原型:斑点
先谢谢你。code-python server
import asyncio
import websockets
all_clients = []
current_coordinates = 50;
updated_coordinates = 202;
async def send_message():
for client in all_clients:
await client.send(str(current_coordinates).encode('utf8'))
async def new_client_connected(client_socket, path):
print("New client connected!")
all_clients.append(client_socket)
while True:
new_message = await client_socket.recv()
print("client Sent:", new_message)
await send_message()
async def start_server():
print("server started")
await websockets.serve(new_client_connected, "localhost", 7999)
if __name__ == '__main__':
event_loop = asyncio.get_event_loop()
event_loop.run_until_complete(start_server())
event_loop.run_forever()
code JS Client
个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Socket Thing1</title>
</head>
<body>
SocketClientdemo
<button onclick="sendMsg()">update value</button>
</body>
<script>
// Create WebSocket connection.
const socket = new WebSocket("ws://localhost:7999/");
// Connection opened
socket.addEventListener('open', function (event) {
console.log('Connected to the WS Server!')
});
// Connection closed
socket.addEventListener('close', function (event) {
console.log('Disconnected from the WS Server!')
});
// Listen for messages
socket.addEventListener('message', function (event) {
console.log('Message from server ', event.data);
num_string = event.data
$('#log').html(num_string);
});
// Send a msg to the websocket
const sendMsg = () => {
socket.send('update value!');
}
</script>
<div class="container">
<div class="jumbotron">
<ul id="messages"></ul>
<div class="container" id="content">
<h3>Current Value is:</h3>
<div id="log">
</div>
</div>
</html>
1条答案
按热度按时间8yoxcaq71#
首先,将普通字符串编码为utf-8是不必要的,您只需要
await client.send(str(current_coordinates))
。其次,如果message.data
是一个blob,那么您只需要将其转换为字符串