局域网中的Socket.io/node.js?

6

我有两台机器在同一个网络中,分别是192.168.1.2和192.168.1.3。

192.168.1.2 = 服务器/开发计算机

192.168.1.3 = 客户端/浏览器计算机

因此,我在服务器/开发计算机上运行了端口82上的socket.io / http服务器。

在客户端计算机上,我使用chrome作为浏览器。

服务器托管了一个网页,例如:

<html>
....
    <script type="text/javascript" src="http://localhost:82/socket.io/socket.io.js"></script>
....
</html>

这是socket.io客户端所需的必要资源。在我的服务器/开发电脑上加载了该资源,但在我的客户端电脑上没有加载。因此,我尝试:

<html>
....
    <script type="text/javascript" src="http://192.168.1.2:82/socket.io/socket.io.js"></script>
....
</html>

现在它在任何电脑上都无法工作。我知道应该是什么。
<script src="http://<uri:port>/socket.io/socket.io.js"></script>

正如socket.io的github上所说,但我只想在本地网络上进行测试。

我也看过了

<script type="text/javascript" src="http://cdn.socket.io/stable/socket.io.js"></script>

但是我正在使用socket.io 0.8.4,所以上述版本不起作用。

那么在本地网络环境中如何为客户端提供socket.io资源? 或者你们知道一个提供我可以使用的socket.io 0.8.4版本的网站吗?

注意:没有防火墙问题。


socket.io.js 只会从你的应用程序所在的同一台机器上提供服务,无论你使用哪台机器访问它都没有关系。 - Marcel M.
@Marcel M. 你在说什么?这些表情符号在在线聊天应用程序中经常使用。 - Derek
我的意思是,只有在服务器和客户端是同一台机器时,使用localhost才能工作,无论端口如何。 - Marcel M.
@MarcelM。我意识到这一点,这就是为什么它不起作用的原因,所以我正在向人们寻求在本地网络上运行socket.io的方法。 - Derek
你收到了什么错误信息?在服务器的网站根目录中是否存在“/socket.io/socket.io.js”文件? - EhevuTov
4个回答

3

尝试使用自动连接让socket.io连接:

var socket = io.connect();

那对我很有用。


2
如果您使用同一主机的不同端口来提供socket.io,则可以尝试使用以下代码:<script>document.write('<script src="//'+ location.hostname + ':9998/socket.io/socket.io.js">\x3C/script>')</script>。这看起来像是一个技巧,但它能够正常工作,只需要将9998替换为您正在提供socket.io的端口即可。

0

用以下内容替换:

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


只有当客户端和服务器在同一台机器上时,才能正常工作。 - Derek
请阅读https://github.com/LearnBoost/Socket.IO/wiki/How-do-I-serve-the-client,还有谁赞同了这个答案? - Derek
你有实际尝试过吗?因为这个答案在我看来是正确的。如果还是不行,可以检查Chrome开发者工具的网络或控制台选项卡,查看脚本请求失败的原因。 - Stéphan Kochen
在您提供的同一页面中有这样的说明:“如果您的 Web 应用程序和 Socket.io 在同一服务器和端口上,则可以简单地包含:<script src="/socket.io/socket.io.js"></script>”。 - Marcel M.
不,只有当客户端和服务器在同一台机器上时,使用本地主机才有效。 - Marcel M.
显示剩余3条评论

0

对于索引:

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

而来自客户端的连接:

var socket = io.connect('http://192.168.1.3:82', {'forceNew': true});

这对我有用!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接