对于一个大部分离线的浏览器游戏,我正在研究从浏览器运行WebRTC信令服务器的可能性。
我可以想象,从安全Angular 来看,从浏览器(或服务工作者)打开一个端口并提供连接是一个很大的禁忌,但我找不到任何有关这方面的信息。
问:Chrome、Firefox(或者其他主流浏览器)是否可以使用javascript打开网络端口并提供连接服务?或者,浏览器设计根本不允许这样做?
*)为了完整起见,我找到了一个选项(也许吧),但是它太复杂了,因此不是很吸引人。有一个javascript包叫做filerjs,它允许在浏览器中安装一个类似posix的文件系统,我想使用indexedb,这将允许在浏览器中安装nodejs。我没有进一步研究它,所以不知道它是否真的工作。以及是否可以通过这种方式提供连接。
1条答案
按热度按时间at0kjp5o1#
我不认为你可以在浏览器中运行一个信令服务器。但是你说“大多数离线”,这是不是意味着对等点连接到互联网,但在同一个局域网上玩?或者他们完全离线?这里有几个想法:
Web上的信令服务器
即使信令服务器在Web上运行,WebRTC也有可能直接通过LAN连接(有待测试,可能取决于浏览器如何选择ICE候选项)。
手动信号
现在,信令服务器只是用来交换SDP消息的。所以理论上你可以复制粘贴报价和回复(或者手动复制,或者用QR码扫描)。这可能不太实际,但是你可以尝试硬编码SDP报价/回复。不过,两个玩家需要以某种方式交换信息:
1.创建SDP消息所需的ICE候选项(即IP
我从来没有试过,但也许你的用户界面可以告诉玩家“请分享以下IP给其他玩家,并在下面输入他们的IP。还选择如果你是要约人或应答人”。但你看,这似乎有点错综复杂...
LAN中的信令服务器
如果对等体完全离线,并且手动信令太复杂,我的下一个想法是在局域网中运行信令服务器,并让对等体连接到它。您甚至可以让您的游戏首先尝试联系Internet上的信令服务器,如果失败(因为它是离线的),它可以后退并尝试联系局域网中的一个(也许它需要向用户询问信令服务器的IP,然后)。