我有一个现有的socket.io应用程序来更新页面,有人写了一条消息,它出现在连接到套接字的所有客户端上。这部分工作正常。
我需要每分钟读取一个json feed并将feed中的数据发送到同一系统,基本上我正在尝试将辅助发送者添加到系统中。 (我将把'feed reading'部分放入无限循环中)以下是代码:
var http = require('http');
var server = require('http').Server();
var io = require('socket.io')(server);
var socket = io.connect('http://host_url.com:8000');
http.get('http://json_feed_url', function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
var items = JSON.parse(body)
items.forEach(function(item, index) {
socket.emit('update', {
title: item.title,
message: item.message
});
});
});
}).on('error', function(e) {
console.log("Got error: ", e);
});
当我运行脚本时,我得到了:
var socket = io.connect('http://host_url.com:8000'); ^ TypeError:Object#没有方法'connect' 在对象。 (不知疲倦 x.js:4:17) 在Module._compile(module.js:456:26) at Object.Module._extensions..js(module.js:474:10) 在Module.load(module.js:356:32) 在Function.Module._load(module.js:312:12) 在Function.Module.runMain(module.js:497:10) 在启动时(node.js:119:16) 在node.js:902:3
我从'消息表单'页面派生了代码,它运行正常:
<script src="http://host_url.com:8000/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://host_url.com:8000');
function update_score() {
socket.emit('update', {
title: $("#txtTitle").val(),
message: $("#txtMessage").val()
});
}
</script>
消息表单,主机应用程序和此提要阅读器位于同一文件夹中,因此它使用相同的socket.io库。
有什么建议吗?
答案 0 :(得分:0)
您需要使用socket.io-client来模拟从服务器发送消息的客户端。
尝试:
var socket = require('socket.io-client')('http://localhost');
socket.on('connect', function(){
socket.on('event', function(data){});
socket.on('disconnect', function(){});
});
答案 1 :(得分:0)
我花了两天的时间才发现了这个问题。
主机应用程序是在6个多月前编写的,除非出现我需要的问题/错误/新功能,否则我通常不会更新javascript库。
因此,当我为这个新的附加模块安装socket.io-client时,它是该库的新版本。
错误只是客户端和主机之间的版本冲突。我将主机应用程序上的socket.io版本升级到最新版本,代码开始工作。
我希望它可以帮助别人。