我见过很多Mule对象存储用于存储事务数据的例子。但是我的问题是它可以用来存储诸如Websockets连接或服务器发送事件(SSe)连接之类的东西吗?
因为这些是长时间运行的连接。需要存储在某个地方,以便以后在另一个事件进入时使用,并且需要在同一连接上传输。存储此连接信息的最佳做法是什么。
显然,连接ID可以用作键,而连接的散列形式可以存储为值?这可行吗?有没有人可以指出我的例子?
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);