2014-09-08 5 views
0

Я пытаюсь создать чат-приложение с помощью узлов js и mongodb. Я смотрю учебник для этого. Я не мог решить ошибку, в которой указано, что сокет не определен при запуске моего файла server.js. Код на сервере 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'); Он снова дает ошибку с указанием io не определено. Разве это не глобально на nodejs?

Пожалуйста, просветите меня об этом.

+0

Вы используете экспресс? –

+0

Просьба предоставить более подробный код server.js –

+0

Я не вижу, где вы определяете свою переменную 'io' – Loupax

ответ

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> 
Смежные вопросы