WebSocket Session共享

WebSocket Session共享,第1张

最近在做消息中心模块,想要实现消息实时推送到前端页面展示,直接摒弃了前端定时轮训调用接口来获取消息数据的方式,采用了WebSocket服务端推送。

流程是首先前端跟后端应用新建一个连接,并携带当前登录的用户ID,此时WebSocket会创建一个WebsocketSession来唯一绑定该连接,我们会在后端用Map建立用户ID与Session的映射关系:

后续有新消息到达时,就可以通过该Map映射找到指定用户ID对应的session来推送消息。但有一个问题,后端是多应用节点,每个节点维护一个这样的Map, 无法共享WebsocketSession ,而且 redis也无法对WebsocketSession序列化后进行存储 。

由于项目目前用到了Redis,所以可以 采用Redis的发布/订阅功能来实现WebsocketSession共享问题。

1新建一个对象,属性有userId, message,用于发送消息

2 当新消息到达时,将消息注册到redis指定topic的频道上

3每个应用节点都订阅该topic的频道,这样新消息一注册,每个节点都能接收到Object,然后从Object中获取userId,再从映射Map中获取userId对应的WebsocketSession(在哪个节点建立的连接和Map映射关系,就会在哪个节点找到对应的session),进行消息推送。

就这样通过Redis的发布/订阅功能实现session共享。当然在步骤2,新消息到达时,可以先在本节点的Map映射中查找是否有userId对应的session,如果有,直接推送消息,而且不必要再将消息注册到redis中。

主要就是ajax获取数据,当然也可以通过websocket获取数据。其中ajax是获取数据最主要的方式,后台写好的接口,前端通过发送请求,来获取后台返回的数据,然后通过js解析,渲染到页面上。websocket也可以获取数据,后台服务器可以推送消息给前端,前端通过websocket的onmessage回调函数来接收后端发送的数据。

流程:

监听端口

接受连接

进行websocket握手

握手成功后的连接进行数据处理

返回响应数据

你还有不懂可以上后盾人上看看,上面有很多高清教学视频,讲得都是这些知识,可以帮助你!如果不行,可以去百度搜索

sessionStorage 数据创建到浏览器页签关闭

localStorage 数据创建到用户手动清除,或者使用clear(), removeItem(key)删除

sessionStorage 条件:同一个浏览器页签

localStorage 条件:相同域名(协议,域名,端口)的不同网址

频繁 *** 作且安全性不高的数据

增加一条数据

根据key值获取一条数据

根据指定的key删除一条数据

清除所有数据

获取指定索引位的key值

数据项个数

宽高不要写单位,宽高不要在css中设置

默认从左到右,从上到下绘制,宽高为负值的时候往返方向绘制

设置填充颜色(可设置渐变色)

合法的颜色值,rgba(255,255,255,5)

设置描边颜色(可设置渐变色)

填充矩形

设置画笔宽度

描边矩形

开始绘制新的路径,相当于抬起画笔

把路径移动到画布中的指定点,不创建线条

添加一个新点,然后在画布中创建从该点到最后指定点的线条

设置或返回线条末端线帽的样式

设置或返回两条线相交时,所创建的拐角类型

创建从当前点回到起始点的路径,创建线条

绘制已定义的路径

清除指定区域内的像素

创建弧/曲线(用于创建圆形或部分圆)

绘制两条切线之间的弧线

设置或返回文本内容的当前字体属性

设置或返回文本内容的当前对齐方式,水平对齐方式

可选值: center,start ,end,left,right

设置或返回在绘制文本时使用的当前文本基线

可选值: alphabetic ,top ,hanging ,middle , ideographic ,bottom

在画布上绘制文本

创建线性渐变(用在画布内容上)

创建放射状/环形的渐变(用在画布内容上)

设置或返回用于阴影的颜色

设置或返回用于阴影的模糊级别

paintshadowBlur = 100;

设置阴影偏移

向画布上绘制图像、画布或视频

转换有叠加效果,如果之前有转换,会在之前转换的基础上再次转换

缩放当前绘图

旋转当前绘图

重新映射画布上的 (0,0) 位置

可选值:

设置或返回绘图的当前 alpha 或透明值

保存之前paint设置的样式

重新回到之前保存的样式

建立连接成功

接收服务器信息, evendata 包含返回的信息

发生错误

关闭通信

当音频元数据加载完毕时触发。

播放过程中实时触发

声音改变时触发

以上就是关于WebSocket Session共享全部的内容,包括:WebSocket Session共享、网页端数据获取有哪些方式呢、本质就是websocket的客户端,php Websocket 怎么接收数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10160672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存