我正在尝试让当前用户连接到WebSocket服务器。
这是我的代码注册WebSocket
fastify.register(FastifyWebsocket, {
options: {
clientTracking: true
}
});
字符串
设置fastify连接
fastify.get(
"/websocket",
{ websocket: true },
(connection /* SocketStream */, req /* FastifyRequest */) => {
const userToken = req.query?.userToken || req.request?.query?.userToken;
if (userToken) {
const userId = userIdToken(userToken);
// Store the user ID in the connection context
connection.socket.userId = userId;
}
connection.socket.on("message", (message) => {
console.log("Web Socket - message", parseMessage(message));
});
}
);
型
然后我有一个发送通知的功能
/**
* Sends a WebSocket notification to all connected clients.
* @param {Object} payload - The payload to send as a WebSocket notification.
* @param {String} type - The type of notification to send.
*/
export const sendGeneralNotification = function (type, payload) {
fastify.websocketServer.clients.forEach((client) => {
client.send(JSON.stringify({ type, payload }));
});
};
型
我的问题是“fastify.websocketServer.clients”总是设置为(0),即使有客户端连接到服务器。
如何让当前客户端连接到服务器?
fastify版本:^4.18.0
@fastify/WebSocket:^7.2.0
1条答案
按热度按时间muk1a3rh1#
我认为问题是propieta客户端不存在于@fastify/WebSocket中作为websocketServer对象的一部分,如您所见:https://github.com/fastify/fastify-websocket我做些测试再告诉你在我看来,这就是问题所在。
对不起,我的回答是支离破碎的。使用连接事件连接的客户端。
字符串