1

我正在尝试基于 NodeJS 和 Socket.IO 进行聊天,当我在同一个端口 4040 上运行它时,所有的工作都很好

但是当我将 socket.io 的源代码放在其他端口上时,它在 ie6 和 ie7 和 8 上不起作用我看到每次获取新数据时页面都会刷新

不久,我有一个基于 PHP 端口 80 的网站,我基于 nodeJs 端口 4040 进行聊天

网站工作正常,聊天在端口 4040 上也能正常工作

这是socket.io的来源

在端口 4040 上工作正常:

<script src="/socket.io/socket.io.js"></script>

工作,但在 ie 6 7 8 上有问题

<script src="http://mywebsite.com:4040/socket.io/socket.io.js"></script>

请不要降级我的问题,因为我知道你们中的许多人不理解我的问题 100%

4

3 回答 3

5

我是新手,socket.io到目前为止我真的很喜欢我所看到的。

我只是想指出对@sdedelbrock 帖子的一个小修正。

您可能不应该使用(如建议的那样):

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:4040');
</script>

因为这将假定服务器也在同一台机器上(使用localhost)。这就是我的一些开发人员所做的,当我部署他们的代码时,它根本不起作用(客户端页面找不到我们的服务器)。

我尝试过并且似乎效果很好的方法是让hostXHR 自动解析该部分,只提供端口号。

请改用以下内容

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect(':4040');
</script>

因此,无论我部署到哪个环境(即:DEV、TEST、STAGE 或 PROD 等),它总是会解析正确的主机名客户端。这就是我们想要的。

于 2019-10-20T01:59:41.093 回答
1

您不应该那样更改端口,这是更改端口的最佳方法。

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:4040');
</script>

这里我们调用相对于你的应用的JS文件,并在socket的初始化中指定端口。

于 2012-11-13T18:43:57.677 回答
0

这是关于如何初始化客户端的 socket.io 文档的链接:https ://socket.io/docs/v4/client-initialization/

于 2021-12-20T16:55:21.250 回答