我在nodejs中创建了一个带有websocket的多人游戏(使用ws lib),运行良好,为了调试,我通过file://协议打开html文件,用客户端网页连接到websocket服务器。
我想把网页托管在我的使用https的网络服务器上。这个网络服务器也使用nodejs,但是因为网页是通过https服务的,所以它不能通过ws创建连接,需要wss。安全降级等等。
我的问题是我有两个独立的程序:HTTPS网络服务器和网络套接字"游戏"服务器。
当我尝试连接到WS服务器时,我得到:
未捕获DOM异常:操作不安全。
我只找到了如何通过创建https服务器来设置wss的说明,但我已经有了一个。
我需要把这两个程序结合起来吗?
我可以也许只是服务与http的游戏单页?
有没有其他的技术,没有这些安全限制?(我不关心加密的websockets)
1条答案
按热度按时间xeufq47z1#
我能让它工作:
而不是想使用https服务器从网络服务器,我“升级”我的http服务器的“游戏服务器”到https。
我不想“创建”另一个https服务器,因为我认为这会导致错误,但我已经间接地用
new WebSocketServer.Server({ port: PORT });
创建了一个http服务器。为了创建https服务器并将其用于WebSocketServer,我使用了以下代码:
之后,我可以监听任何端口与
server.listen(PORT,callback)
。我也不确定如何或是否可以获得使用greenlock获得的证书,但我在
greenlock.d/live/[yourdomain]/
下找到了它,其中greenlock.d是greenlock.init(options)
中指定的configDir。对于客户端,我需要这样连接:
ws = new WebSocket("wss://mydomain:"+PORT);
'