在其他端口上使用socket.io

时间:2012-11-13 17:29:53

标签: php node.js socket.io

我正在尝试基于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>

工作但有问题,即6 7 8

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

请不要降级我的问题,因为我知道很多人不理解我的问题

2 个答案:

答案 0 :(得分:1)

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

我只是想对@sdedelbrock的帖子进行一点更正。

您可能应该使用(建议):

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

因为这将假定服务器也位于同一台计算机上(使用localhost)。这是我的一些DEV所做的事情,当我部署他们的代码时,它根本无法工作(客户端页面找不到我们的服务器)。

我尝试过的并且似乎工作得很好的方法是,仅提供端口号,让XHR自动解析host部分。

改为使用以下内容

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

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

答案 1 :(得分:0)

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

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

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