悠家娱乐|| Linux 中国,构建一个即时消息应用(四):消息( 三 )


首先 , 它以只读模式开始一个SQL事务 。 检查参与者是否存在 , 并查询所有消息 。 在每条消息中 , 我们使用当前经过身份验证的用户ID来了解用户是否拥有该消息(mine) 。 然后 , 它提交事务 , 在goroutine中更新参与者messages_read_at并以消息响应 。
读取消息
该端点处理对/api/conversations/{conversationID}/read_messages的POST请求 。 没有任何请求或响应主体 。 在前端 , 每次有新消息到达实时流时 , 我们都会发出此请求 。
funcreadMessages(whttp.ResponseWriter,r*http.Request){ctx:=r.Context()authUserID:=ctx.Value(keyAuthUserID).(string)conversationID:=way.Param(ctx,''conversationID'')iferr:=updateMessagesReadAt(ctx,authUserID,conversationID);err!=nil{respondError(w,fmt.Errorf(''couldnotupdatemessagesreadat:%v'',err))return}w.WriteHeader(http.StatusNoContent)}
它使用了与更新参与者messages_read_at相同的函数 。
到此为止 。 实时消息是后台仅剩的部分了 。 请等待下一篇文章 。
源代码
via:nicolasparada.netlify.com
作者:NicolásParada选题:lujun9972译者:gxlct008校对:wxy
本文由LCTT原创编译 , Linux中国荣誉推出