我见过很多使用 Mule Object Store 存储事务数据的例子。但是我的问题是它可以用来存储像 Websockets 连接或服务器发送事件(SSe)连接之类的东西吗?
因为这些是长时间运行的连接。它们需要存储在某个地方以备以后在另一个事件进入时使用并且需要在同一连接上传输。存储此连接信息的最佳做法是什么。
显然,connection-id 可以用作 Key,而 Connection 的散列形式可以存储为 Value?这可行吗?有没有人可以指点我的例子?
webSocket 连接是一个活动对象,不能像简单的 JSON 对象那样持久化。它包含指向其实现内部的实际 TCP 套接字的指针。因此,您需要将其存储在某种内存和进程内存储或数据结构中。
由于听起来您已经有了一个使用 ID 访问它的简单密钥,因此我建议您使用一个Map
或一个WeakMap
对象。
let socketMap = new Map();
每当有新的套接字连接时:
// add new connection to the map
socketMap.set(id, socket);
任何时候套接字断开连接:
// remove disconnected socket from the map
socketMap.delete(id);
任何时候你需要获得一个特定的套接字:
let socket = socketMap.get(id);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句