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

时间:2017-10-29 21:27:25

标签: websocket mule server-sent-events

我已经看到许多用于存储事务数据的Mule Object Store示例。但是我的问题是它可以用于存储类似Websockets连接或服务器发送事件(SSe)连接的东西吗?

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

显然,connection-id可以用作Key,并且可以将Connection的哈希形式存储为Value?这可行吗?有没有人能指出我的例子?

1 个答案:

答案 0 :(得分:0)

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