websocket使用过程中需要注意的地方

websocket基础使用,我就不多说了,我的是用注解方式实现的。
也就实现了基本功能,写了客户端和服务端,保持长连接,传输json数据。

这里有一个点需要特别的注意。

我们写系统的时候,常规是要进行DB操作的,为了后期出问题,从数据库看出问题的来源,从而快速解决问题。
但是,就是在这个地方。

我是先发送WS数据后,在进行DB操作。

理论上也都是这样想的,我发出去了啥,我就保存啥,如果先保存的话,万一没发出去咋整?

可是就是因为这一常规想法,导致了一个大坑。

为了保证WS数据交互不会出乱子,肯定是要定义一个uuid之类的东西,保证两边发送和回复有字段可依。
所以,我在发送WS数据后,进行DB操作,对方返回的结果数据给我了,我要更新DB。
但是,WS回复数据太快,导致我的DB insert操作还没结束,就返回了,此时,我也同时进行这个update操作。
就这样,包了空指针异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 WebSocket 进行实时通信时,可以结合 Redis 来实现消息的发布和订阅。以下是一个简单的示例: 1. 首先,你需要确保已经安装了 Redis 和相应的 Redis 客户端库。 2. 在你的 WebSocket 服务器代码,你可以使用 Redis 的发布者(publisher)来发送消息到指定的频道(channel): ```python import redis # 创建 Redis 客户端 redis_client = redis.Redis() # 发布消息到指定频道 def publish_message(channel, message): redis_client.publish(channel, message) ``` 3. 然后,在你的 WebSocket 服务器代码,你可以使用 Redis 的订阅者(subscriber)来接收订阅的消息: ```python import redis # 创建 Redis 客户端 redis_client = redis.Redis() # 订阅指定频道的消息 def subscribe_channel(channel): pubsub = redis_client.pubsub() pubsub.subscribe(channel) for message in pubsub.listen(): # 处理接收到的消息 print(message['data']) ``` 4. 在你的 WebSocket 客户端代码,你可以使用 WebSocket 来连接服务器,并在接收到消息时进行处理: ```javascript const socket = new WebSocket('ws://your-websocket-server-url'); // 连接建立后发送订阅消息 socket.onopen = () => { socket.send('subscribe_channel'); }; // 接收到消息时进行处理 socket.onmessage = (event) => { const message = event.data; // 处理接收到的消息 console.log(message); }; ``` 这样,你就可以在 WebSocket 服务器和客户端之间通过 Redis 实现实时消息的发布和订阅了。注意,这只是一个简单的示例,实际使用时你可能需要根据你的需求进行适当的调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值