带有聊天客户端的 Flask webapp(使用 websockets 到另一台服务器)
Flask webapp with chat client (using websockets to another server)
目前,我有一个在 Flask 上运行的动态网站,我想在后端实现一个聊天客户端,该客户端利用将连接到外部服务器的 websockets。因此,例如,当登录用户访问“/chat”路由时,我想启动一个到这个外部聊天服务器的 websocket。
然后,我将处理页面上带有 JavaScript 的 sending/receiving 消息,将 JSON 对象发布到另一个路由,例如“/send_msg”,同时通过从“/receive_msg”获取新消息不断检查新消息。
问题是我在网上看到的每一个教程(包括关于 SO 的问题)都是关于本地 websockets 的,其中 flask 应用程序本身充当聊天服务器。使用 python 的内置套接字模块并不好(我认为),因为我看不到一种方法可以在用户在页面上时保持打开状态,然后在用户离开页面。有什么办法可以为外部服务器做到这一点吗?如果是这样,我该怎么做呢?谢谢! <3
我认为你在混淆技术术语
Flask是一个webframework(这里有一些库可以提供websockets),一般来说这与websockets无关
它服务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)客户端连接到
(python-websocket-server 是一个非常容易使用的 iirc),但这通常是一个独立于你的 flask 服务器的应用程序,(它仍然可以导入 sqlalchemy 模型或函数或其他))
如果您真的只想 ajax 调用 posts/gets 来检查消息,您将使用某种数据库 table,然后将新消息放入并查询定期收到新消息...但这不是 websocket 服务器...套接字服务器没有历史状态的概念...您只能看到在收听它们时发送的消息...
目前,我有一个在 Flask 上运行的动态网站,我想在后端实现一个聊天客户端,该客户端利用将连接到外部服务器的 websockets。因此,例如,当登录用户访问“/chat”路由时,我想启动一个到这个外部聊天服务器的 websocket。
然后,我将处理页面上带有 JavaScript 的 sending/receiving 消息,将 JSON 对象发布到另一个路由,例如“/send_msg”,同时通过从“/receive_msg”获取新消息不断检查新消息。
问题是我在网上看到的每一个教程(包括关于 SO 的问题)都是关于本地 websockets 的,其中 flask 应用程序本身充当聊天服务器。使用 python 的内置套接字模块并不好(我认为),因为我看不到一种方法可以在用户在页面上时保持打开状态,然后在用户离开页面。有什么办法可以为外部服务器做到这一点吗?如果是这样,我该怎么做呢?谢谢! <3
我认为你在混淆技术术语
Flask是一个webframework(这里有一些库可以提供websockets),一般来说这与websockets无关
它服务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)客户端连接到 (python-websocket-server 是一个非常容易使用的 iirc),但这通常是一个独立于你的 flask 服务器的应用程序,(它仍然可以导入 sqlalchemy 模型或函数或其他))
如果您真的只想 ajax 调用 posts/gets 来检查消息,您将使用某种数据库 table,然后将新消息放入并查询定期收到新消息...但这不是 websocket 服务器...套接字服务器没有历史状态的概念...您只能看到在收听它们时发送的消息...