我可以使用 mule 对象存储来持久化 HTTP 连接吗?



我见过很多Mule对象存储用于存储事务数据的例子。但是我的问题是它可以用来存储诸如Websockets连接或服务器发送事件(SSe)连接之类的东西吗?

因为这些是长时间运行的连接。需要存储在某个地方,以便以后在另一个事件进入时使用,并且需要在同一连接上传输。存储此连接信息的最佳做法是什么。

显然,连接ID可以用作键,而连接的散列形式可以存储为值?这可行吗?有没有人可以指出我的例子?

webSocket 连接是一个活动对象,不能像简单的 JSON 对象那样持久化。 它包含指向其实现内部的实际 TCP 套接字的指针。 因此,您需要将其存储在某种内存和进程内存储或数据结构中。

由于听起来您已经有一个简单的密钥可以使用ID访问它,因此我建议使用MapWeakMap对象。

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);

最新更新