实时socket.io客户端Web浏览器

时间:2018-04-23 14:44:58

标签: html socket.io real-time

我正在尝试创建一个简单的本地Web服务器,从远程服务器收集实时数据。远程服务器不受我的控制,它会连续流出文本行。

我认为scocket.io对于这个目的来说还不错,但我对node.js并不熟悉,我也不知道问题出在哪里。我已经安装了socket.io:

npm install socket.io

然后我在www dir中编写了一个简单的index.html页面:

<!DOCTYPE html>
<html>
    <head>
    <script src="socket.io/socket.io.js"></script>
    <script>
        var socket = io.connect('http://192.168.1.100:8888');
        socket.on('data', function(msg) {
            var val = msg;
             $('#data_value').html(val);
        })
    </script>
</head>
<body>
    <h1>Data Stream</h1>
        lines: <span id="data_value"></span><br/>
</body>
</html>

当我使用浏览器加载index.html时,我可以看到具有正确标题的网页和字符串&#34; lines:&#34;但是没有打印出数据。

如果我尝试在http://92.168.1.100:8888直接浏览远程服务器,我可以看到该流。

你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

92.168.1。*,是路由器的家庭IP地址。你说服务器不在你的控制之下,但它仍然是从客户端试图连接的同一个路由器运行的。

所以你正在通过端口8888监听来自服务器的呼叫,但是这个服务器是本地服务器。如果其他人正在运行此服务器,您将需要让他们移植它并向他们发送他们的公共IP地址,否则您的网站只是在等待您的PC托管此服务器并向您发送数据:(

答案 1 :(得分:0)

我认为您误解了socket.io的工作方式。 问题似乎出在代码的socket.on部分中。 Socket.io仅响应socket.io广播事件,而不响应服务器正在更新的字符串流。

192.168.1.100服务器是socket.io服务器吗?如果没有,则您的Web应用程序将无法用作socket.io客户端。