2017-06-13 98 views
-1

我想在我的api中使用套接字。但是我无法在控制台中看到日志。node.js不打印到控制台

我看到的唯一输出是:

[nodemon] restarting due to changes... 
[nodemon] starting `node server.js` 
We are live on8000 

这里是我的server.js文件:

// server.js 
const express  = require('express'); 
const MongoClient = require('mongodb').MongoClient; 
const bodyParser  = require('body-parser'); 
const app   = express(); 
const port   = 8000; 

var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

const db = require('./config/db'); 

app.use(express.static(__dirname + '/../app')); 
app.use(bodyParser.urlencoded({ extended: true })); 


MongoClient.connect(db.url,(err,database) =>{ 

    if (err) return console.log(err); 

    //check below line changed 
    require('./app/routes')(app, database); 
    app.listen(port,() => { 
     console.log("We are live on"+port); 
    }); 

    app.get('/', function(req, res){ 
     res.sendFile(__dirname + '/index.html'); 
    }); 


    io.on('connection',function(socket){ 
     console.log('client connected'); 

     socket.on('disconnect', function() { 
     console.log('disconnect'); 
     }); 

    }); 

}) 

和index.html的是:

<!DOCTYPE html> 
<html> 
    <head><title>Hello world</title></head> 
    <script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io(); 
</script> 
    <body>Hello world</body> 
</html> 

我看到你好世界在网络浏览器,但我看不到'客户端连接'的控制台日志。

+0

这就是我have.When控制台打印“我们live on 8000“,这是不是意味着服务器已连接?你能告诉我如何连接到服务器? –

+0

@JaromandaX在端口3000上调用socket.io将打印日志。但在端口8000上调用它不会打印日志。你知道为什么吗 ? –

回答

1

更新:在您的浏览器客户端,您可以在执行console.log http://localhost:8000/socket.io/socket.io.js 404看到错误和(index):6 Uncaught ReferenceError: io is not defined

你必须附上socket handler的http服务器var io = require('socket.io')(server);,但在你的代码,你开始通过express server

app.listen(port,() => { 
     console.log("We are live on"+port); 
    }); 

改变它的Web服务器

server.listen(port,() => { 
     console.log("We are live on"+port); 
    }); 
0

我创建了一个新的.js文件并侦听端口3000,而不是8000 socket.io

工作appsocket.js

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 

app.get('/', function(req, res){ 
    res.sendfile('index.html'); 
}); 

//Whenever someone connects this gets executed 
io.on('connection', function(socket){ 
    console.log('A user connected'); 

    //Whenever someone disconnects this piece of code executed 
    socket.on('disconnect', function() { 
    console.log('A user disconnected'); 
    }); 

}); 

http.listen(3000, function(){ 
    console.log('listening on *:3000'); 
}); 

现在我能够看到控制台时日志我呼吁本地主机:3000以代替localhost:8000

+0

你看到这个服务器代码与原始代码有什么不同吗?这就是它的原因 –

+0

是的,我需要关心使用快递! :) –

+0

确实 - 我也没有看到这个问题:p –