上述第二个代码报错 str, bytes or bytearray expected, not int如何解决
时间: 2024-03-11 18:49:10 浏览: 19
这个错误是因为 `websocket_server` 库在创建 WebSocket 服务端时,需要指定监听的端口号,但是在 Python 3 中,`websocket_server` 库将端口号默认解析为 `str` 类型,而 Python 2 中默认解析为 `int` 类型,因此在 Python 3 中会报上述错误。
要解决这个问题,可以将监听的端口号强制转换为 `str` 类型,例如:
```
import json
import websocket_server
def on_message(client, server, message):
# 将收到的消息解析为 JSON
data = json.loads(message)
# 处理消息
if data['type'] == 'hello':
print('收到 Hello 消息')
# 回复消息
reply = {
'type': 'reply',
'message': 'Hello, Client!'
}
server.send_message(client, json.dumps(reply))
elif data['type'] == 'goodbye':
print('收到 Goodbye 消息')
# 关闭连接
server.close_connection(client)
if __name__ == '__main__':
# 创建 WebSocket 服务端
server = websocket_server.WebsocketServer('8080') # 将端口号强制转换为 str 类型
server.set_fn_message_received(on_message)
server.run_forever()
```
在上面的代码中,我将 `8080` 端口号强制转换为 `str` 类型,这样程序就可以在 Python 3 中正常运行了。