叮当over 2024-05-01 23:32 采纳率: 78.6%
浏览 12

python websocket

我在本地写好了python websocket服务端的代码,上传到云服务器后把代码中创建websocket时的ip地址改为了公网ip,但是却运行不了,就像下面这样

img

我的想法就是在云服务器上创建一个 websocket服务,然后在本地连接这个websocket,请问该怎么做?


我已经根据大家的意见配置好了防火墙规则,如下图:

img

我把websocket服务器端的ip地址改为了云服务器的内网地址就可以正常运行

img

但是设置为公网ip的时候就会报以下错误:

img

我能确保公网ip是正确无误的

  • 写回答

5条回答 默认 最新

  • 专家-皆知 2024-05-01 23:32
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    要实现你的目标,你需要确保几个关键点:首先,确保云服务器上的防火墙设置允许从外部访问8000端口。其次,你需要确保你的云服务器有一个固定的IP地址,并且这个IP地址可以从互联网访问。最后,你的代码可能还需要进行一些调整,以便正确地处理异步操作。

    这里是一个简化版的WebSocket服务器代码示例,用于在云服务器上启动WebSocket服务:

    import asyncio
    import websockets
    
    async def handler(websocket, path):
        async for message in websocket:
            print(f"Received: {message}")
            await websocket.send("Echo: " + message)
    
    def main():
        loop = asyncio.get_event_loop()
        try:
            # 使用你的云服务器公网IP替换这里的 'your_server_ip'
            server = websockets.serve(handler, 'your_server_ip', 8000)
            print("WebSocket server started on port 8000")
            
            loop.run_until_complete(server)
            loop.run_forever()
        except KeyboardInterrupt:
            pass
        finally:
            print("Closing server...")
            server.close()
            loop.run_until_complete(server.wait_closed())
            print("Server closed.")
        loop.close()
    
    if __name__ == "__main__":
        main()
    

    要测试这个WebSocket服务器,你需要一个WebSocket客户端,例如可以使用浏览器插件(如WebSocket Client for Chrome)或者编写一个简单的Python客户端。这里是Python客户端的例子:

    import asyncio
    import websockets
    
    async def client_task():
        uri = f"ws://{your_server_ip}:8000"
        async with websockets.connect(uri) as websocket:
            await websocket.send("Hello, WebSocket!")
            response = await websocket.recv()
            print(f"Received: {response}")
    
    asyncio.run(client_task())
    

    请将 'your_server_ip' 替换为你的云服务器的实际公网IP。确保云服务器的防火墙配置允许来自外网的8000端口流量,并且网络策略允许此连接。如果一切正常,你应该能在服务器端看到接收到的消息,并且在客户端看到消息的回显。

    如果你遇到任何网络连接问题,建议检查云服务器的网络设置、防火墙规则以及云服务商是否限制了某些端口的访问。如果问题依然存在,可能需要更深入的网络诊断,这可能涉及到NAT穿透、端口转发等高级网络知识。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 5月2日
  • 创建了问题 5月1日

悬赏问题

  • ¥15 rt-thread线程切换的问题
  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊