我已经看到许多用于存储事务数据的Mule Object Store示例。但是我的问题是它可以用于存储类似Websockets连接或服务器发送事件(SSe)连接的东西吗?
因为这些是长期连接。当另一个事件进入时,需要将其存储在某个地方供以后使用。需要在同一个连接上传输。存储此连接信息的最佳做法是什么。
显然,connection-id可以用作Key,并且可以将Connection的哈希形式存储为Value?这可行吗?有没有人能指出我的例子?
答案 0 :(得分:0)
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);