在Node Js上运行服务器时未定义套接字

时间:2014-09-08 08:57:52

标签: javascript node.js sockets chat

我正在尝试使用节点js和mongodb创建聊天应用程序。我正在寻找一个教程。我无法解决运行我的文件server.js时未定义状态套接字的错误。服务器Js中的代码是

var mongo = require('mongodb').MongoClient,
client = require('socket.io').listen(8080).sockets;
console.log(mongo);
mongo.connect('mongodb://@127.0.0.1/chat',function(err,db) {
    if(err) throw err;  
    client.on('connection',function() {     
        //Wait for Input
        socket.on('input',function(data) {
        console.log(data);
    });
});

});

当我想在输入上监听套接字时,会创建错误。当我尝试将套接字定义为。时 socket =io.connect('http://127.0.0.1:8080');它再次给出错误陈述未定义。在nodejs上不是io全局吗?

请赐教我这个。

1 个答案:

答案 0 :(得分:1)

如果您使用快递,请尝试以下操作。

var express  = require('express'),
, app        = express()
, server     = require('http').Server(app)
, mongo      = require('mongodb').MongoClient,
, io         = require('socket.io')(server);

server.listen(3000, function() {
     console.log("Server Running on port 3000");
});   


mongo.connect('mongodb://@127.0.0.1/chat',function(err,db) {

      io.sockets.once('connection', function(socket) {

       io.sockets.emit('new-data', {
        channel: 'stdout',
        value: "My Data"
     });

   });

});

在view.html中

   <html>

   <head>
     <script src="https://cdn.socket.io/socket.io-1.0.6.js"></script>

     var socket = io.connect('http://localhost');
     var streamer = $('#streamer');

     socket.on('new-data', function(data) {
        streamer.val(data.value);
     });
  </head>

  <body>
      <div id="streamer"> </div>
  </body>

  </html>