使用聊天客户端Flaskwebapp(使用WebSocket连接到另一台服务器)

2024-03-28 23:57:43 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我有一个运行在Flask上的动态网站,我想在后端实现一个聊天客户端,它利用WebSocket连接到外部服务器。因此,例如,当登录用户访问“/chat”路由时,我想启动一个指向此外部聊天服务器的websocket

然后,我将在将JSON对象发布到另一个路由(例如“/send\u msg”)的页面上使用JavaScript处理发送/接收消息,同时通过获取“/receive\u msg”不断检查新消息

问题是,我在网上看到的每一篇教程(包括相关问题)都是关于本地websockets的,flask应用程序本身就是一个聊天服务器。使用python的内置套接字模块是不好的(我认为),因为我看不到一种方法可以让它在用户在页面上时保持打开状态,然后在用户离开页面时关闭()。对于外部服务器,有什么方法可以做到这一点吗?如果是的话,我该怎么做呢?谢谢&书信电报;三,


Tags: 方法用户服务器消息利用客户端flask路由
1条回答
网友
1楼 · 发布于 2024-03-28 23:57:43

我想你把你的技术术语弄混了

Flask是一个webframework(这里有一些库可以提供WebSocket),一般来说,这与WebSocket无关

它提供HTML/JS/CSS。。。您可以使用js连接到websocket服务器,如下所示

let ws = new WebSocket("ws://my.funky.ws/url")
ws.on_message = (data)=>{
  console.log("Got a websocket message1!!!:",data)
}
ws.on_close = ()=>console.log("Closed websocket connection!")
ws.on_open = () => console.log("Opened websocket server connection successfully!")

运行websocket服务器,javascript(或非javascript)客户端连接到 (PythonWebSocket服务器是一个非常容易使用的iirc),但这通常是一个与flask服务器分离的应用程序(它仍然可以导入sqlalchemy模型或函数或其他内容))

如果您真的只想通过ajax调用POST/GET来检查消息,您可以使用某种类型的数据库表,然后将新消息放入其中并定期查询新消息。。。但那不是websocket服务器。。。套接字服务器没有历史状态的概念。。。您只看到在侦听时发送的消息

相关问题 更多 >