Javascript 为什么我要获取新数据,但node.js不发送数据?
我使用以下代码在mongo数据库中获取新插入并将其发送到html文件:Javascript 为什么我要获取新数据,但node.js不发送数据?,javascript,node.js,mongodb,socket.io,Javascript,Node.js,Mongodb,Socket.io,我使用以下代码在mongo数据库中获取新插入并将其发送到html文件: mongo.MongoClient.connect (uristring, function (err, db) { db.collection ("speed", function (err,collection) { collection.isCapped(function (err, capped) { if (!capped) { console.l
mongo.MongoClient.connect (uristring, function (err, db) {
db.collection ("speed", function (err,collection) {
collection.isCapped(function (err, capped) {
if (!capped) {
console.log (collection.collectionName + " is not a capped collection");
}
else
{
var cursorOptions = {
tailable: true,
awaitdata: true,
numberOfRetries: -1
};
var stream = collection.find({},{value:1,_id:0},cursorOptions).sort({$natural: -1}).stream();
stream.on('data', function(document) {
io.sockets.on('connection', function(socket){
socket.emit('message', {'message': document});
});
});
}
});
});
});
在客户端:
var socket = io.connect('/');
var myValue = [];
socket.on('message',function(data){
console.log(data);
myValue.push(data.message.value);
当我第一次读取数据时,它可以正常工作,但当我在服务器运行时插入新数据时,数据会显示在服务器中,但不会发送到客户端
stream.on('data', function(document) {
socket.emit('message', {'message': document});
io.sockets.on('connection', function(socket){
socket.emit('message', {'message': document});
});
});
在您的第一个socket.emit()中,您指的是哪个套接字?
删除第一个socket.emit将解决此问题
stream.on('data', function(document) {
io.sockets.on('connection', function(socket){
socket.emit('message', {'message': document});
});
});
或者按照以下方式更改代码也可以
io.sockets.on('connection', function(socket){
stream.on('data', function(document) {
socket.emit('message', {'message': document});
});
});
那么,您是否在客户端打开了一个websocket连接来监听
消息
?是的。。var socket=io.connect('/');var myValue=[];socket.on('message',function(data){console.log(data);myValue.push(data.message.value);您是否保证您的socket.io服务器和socket.io客户端之间的连接成功?如果是,则上述功能应能正常工作。