FastAPI 学习之路(五十一)WebSockets(七)实现一对一聊天

有了上一遍的基础,其实这个一对一很简单,我们在之前的websockets管理中已经实现了一对一发消息的内容,这次呢,我们只需要实现一对一如何处理消息即可。

@app.websocket("/ws/{user}/")
async  def websocket_many_point(
        websocket: WebSocket,
        user:str,
        cookie_or_token: str = Depends(get_cookie_or_token),
        ):
    await manager.connect(user, websocket)
    try:
        while True:
            data = await websocket.receive_text()

            await  manager.send_other_message(message=data.split("?")[0],user=data.split("?")[1])
    except WebSocketDisconnect as e:
        manager.disconnect(user, websocket)

其实很简单,还是之前的方法,只是对应的path不一样,而且要发给的人我用了?拼接,实际中,可以作为参数带过来,这里只是讲路子,那么我们要发送给的人,需要在前端的页面,我们选择或者填写我们要发送的用户。

html;gutter:true; Chat</p> <p>WebSocket 聊天</p> <pre><code>Send </code></pre> <p>退出</p> <pre><code>var token=window.localStorage.getItem("token") if (token==null ){ window.location.href="/login" } var ws = new WebSocket("ws://localhost:8000/ws/"+token+"/?token="+token); ws.onmessage = function (event) { var messages = document.getElementById('messages') var message = document.createElement('li') var content = document.createTextNode(event.data) message.appendChild(content) messages.appendChild(message) }; function sendMessage(event) { var input = document.getElementById("messageText") var username = document.getElementById("username") ws.send(input.value+"?"+username.value) input.value = '' event.preventDefault() } function logout() { window.localStorage.removeItem("token") window.location.href='/login' } </code></pre> <p>

我才用了填写的方式,新增了一个input标签,用来让用户填写要发送给的用户,这样我们就完成了,一个简单的一个一聊天的demo。其实很简单。

我们来调试下,我们分别登陆两个账号,账号A 和账号B。

FastAPI 学习之路(五十一)WebSockets(七)实现一对一聊天

我们可以看到消息已被成功接受,反之亦然。为了验证效果,此时可以添加第三人,看看是否可以收到消息。

[En]

We can see that the message has been accepted successfully, and vice versa. In order to verify the effect, a third person can be added at this time to see if the message can be received.

第一个帖子是在官方账号上。欢迎关注我们。

[En]

The first post is on the official account. Welcome to follow us.

FastAPI 学习之路(五十一)WebSockets(七)实现一对一聊天

Original: https://www.cnblogs.com/leiziv5/p/15416901.html
Author: 北漂的雷子
Title: FastAPI 学习之路(五十一)WebSockets(七)实现一对一聊天

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/511000/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球