我正在尝试创建一个简单的本地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直接浏览远程服务器,我可以看到该流。
你能帮助我吗?
答案 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客户端。