我正在计划建立一个IRC网络,并一直在探索各种选择。我计划使用Inspircd IRC服务器。还有一个运行流星的网络服务器。是否可以使用websockets构建一个网络IRC客户端,而不使用webscockets网关(以减少网络服务器上的负载(,并直接连接到IRC Inspircd盒?
其次,如果上面的答案是肯定的,那么IRCclient <-> IRCServer
和IRCclient <-> WebScoketGateway (/webserver) <-> IRC Server
关系的优缺点是什么。
我看到大多数涉及node或流星的模块(包括socket.io(都使用WSGI,为什么?我是不是遗漏了什么?
请注意,在这种情况下,IRC服务器和Webserver都是由我运行的,因此可能会让浏览器认为两者都是同一个盒子。
是否可以使用websockets构建一个网络IRC客户端,而不使用webscockets网关(以减少网络服务器上的负载(,并直接连接到IRC Inspircd盒?
没有。WebSockets是HTTP内部的一层,即客户端发送带有Upgrade标头的HTTP请求,服务器则以确认Upgrade请求的HTTP响应进行响应。数据以二进制消息的形式交换(带有它们自己的帧(,并且通常还与一些密钥异或。
因此,您不能向非WebSocket服务器发送任意数据,也不能发送IRC数据,但您需要一个网关来将WebSocket握手和帧转换为正常的TCP。
UnrealIRCd 4.0.10及更高版本支持WebSocket协议(ws://和wss://(。WebSocket框架交换与标准IRC连接相同的消息。