使用ws,Node.js WebSocket库,可以让多个服务器共享一个HTTP/S服务器。
有可能用socket.io做同样的事情吗?
const socketioWsS = new WebSocket.Server({ noServer: true });
const graphqlWsS = new WebSocket.Server({ noServer: true });
const io = socketIo(socketioWsS, {
transports: ["websocket"]
});
server.on("upgrade", function upgrade(request, socket, head) {
const pathname = url.parse(request.url).pathname;
if (pathname === "/socket.io/") {
socketioWsS.handleUpgrade(request, socket, head, function done(ws) {
socketioWsS.emit("connection", ws, request);
});
} else if (pathname === "/graphql") {
graphqlWsS.handleUpgrade(request, socket, head, function done(ws) {
graphqlWsS.emit("connection", ws, request);
});
} else {
socket.destroy();
}
});
server.listen(config.app.port, () => {
...
new SubscriptionServer(
{
execute,
subscribe,
schema
},
{
server: graphqlWsS
}
);
});
您可以将两个Socket.io服务器连接到同一个web服务器上。为了使其工作,每个Socket.io实例都需要位于不同的路径上(一个可以是默认路径,一个可以是自定义路径)。这意味着您需要在socket.io客户机和socket.io服务器中设置path
选项以匹配其中一个服务器。
请记住,socket.io在客户机和服务器上的默认路径(如果您没有指定任何内容的话)都是/socket.io
,这就是为什么它响应/socket.io/socket.io.js
,为客户机提供socket.io客户机代码。因此,如果您更改了这两个路径,您将不得不调整客户机获取其socket.io代码的方式。
下面是用于在服务器端设置路径的文档:https://socket.io/docs/server-api/和客户端文档:https://socket.io/docs/client-api/#with-custom-path。
如果您真的只想分离传入的socket.io连接,但不一定要有两个单独的socket.io服务器实例,那么可以使用socket.io命名空间来完成。每个客户机将连接到不同的命名空间(类似于路径,但实际上不是路径),然后您可以在服务器端为每个命名空间上的传入连接设置单独的监听器。这是socket.io在webSocket之上添加的一个特性,正是为了这种情况。
我试图在Java中实现一个多线程服务器,服务器为每个连接到它的客户机生成一个新线程。通信在一个类中执行,该类实现可运行接口,并将套接字描述符作为输入。当一个新客户端连接时,我会生成一个带有套接字描述符编号的新线程。 我需要在服务器上维护两个ArrayList,每当新客户端加入系统时都会更新(带有客户端发送的一些数据)。如何在运行在不同线程中的多个客户端之间完成这种共享ArrayList的行为?
在使用Firebase云消息传递(FCM)的Firebase项目中,有一个用于云消息传递的自动生成的服务器密钥。FCM文档并没有指出可以且只能有一台服务器使用该自动生成的密钥(至少我可以找到)。但是,文档明确指出应该安全存储服务器密钥。 第一个问题:我是否错过了单个服务器记录的限制? 如果没有明确的限制,我确实会想到FCM可能会内置检查,以确保给定Firebase项目发送消息的请求仅来自单个IP地
本文向大家介绍Springboot实现多服务器session共享,包括了Springboot实现多服务器session共享的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了springboot实现多服务器session共享的具体代码,供大家参考,具体内容如下 环境: springboot:2.0.4 redis:3.2.100 jdk:1.8 eclipse:4.9.0 1.原理 正常
问题内容: 首先,我想说两件事。首先,很抱歉,如果已经有人问过这个问题,我已经搜索了与此主题相关的类似问题,但找不到解决方案。其次,对于冗长的问题,我们深表歉意,如有任何错误,请通知我,我将确保做出适当的更改:)。 我是Android开发的新手(大约2个月),所以请原谅我的无知。我有关于Android服务的问题。 我的问题如下,我创建了以下3个应用程序: 一个包含小型测试服务( myService
多个同步服务器 Since you have full control of express instance lifecycle, it's not a problem to create a few multiple simultaneous servers (e.g. both HTTP & HTTPS). Example: 因为你已经可以完全控制express实例的生命周期了,所以创建多个
nestjs 一个服务如何既做微服务也做http服务器? 比如一个接口既可以做 http 又可以做微服务.不想再写一个专门的http 服务器. 接口是否可以相同?