2017-08-13 55 views
0

感谢您提前帮助。我从控制台See Server running console log获得以下状态。下面的代码段是我的app.js代码,其中express和node服务器正在运行。如果您看到我的套接字代码,则在套接字连接下方的console.log未显示在服务器日志中。套接字不听我的消息。套接字未使用nodejs收听

我也上传了我在github上的代码示例,在这里您可以找到(github.com/ferozpuri/node-app)客户端套接字代码位于SocketController.js中的一个角度控制器文件。

这是我的app.js文件代码,因为您可以看到“连接已建”的控制台日志从不显示。和套接字控制台一样。

var express = require('express'); 
 
var http = require('http'); 
 
var path = require('path'); 
 
var favicon = require('static-favicon'); 
 
var logger = require('morgan'); 
 
var cookieParser = require('cookie-parser'); 
 
var bodyParser = require('body-parser'); 
 
var engines = require('consolidate'); 
 
var routes = require('./routes'); 
 
var users = require('./routes/user'); 
 
var app = express(); 
 
var server = require('http').Server(app); 
 
var io = require('socket.io')(server); 
 

 
// view engine setup 
 
//app.set('views', path.join(__dirname, 'views')); 
 
//app.set('view engine', 'jade'); 
 

 
app.engine('html', engines.nunjucks); 
 
app.set('view engine', 'html'); 
 
app.set('views', path.join(__dirname, 'views')); 
 

 
app.use(favicon()); 
 
app.use(logger('dev')); 
 
app.use(bodyParser.json()); 
 
app.use(bodyParser.urlencoded()); 
 
app.use(cookieParser()); 
 
app.use(express.static(path.join(__dirname, 'public'))); 
 
app.use(app.router); 
 

 
app.get('/', routes.index); 
 
app.get('/users', users.list); 
 

 
/// catch 404 and forwarding to error handler 
 
app.use(function (req, res, next) { 
 
    var err = new Error('Not Found'); 
 
    err.status = 404; 
 
    next(err); 
 
}); 
 

 
/// error handlers 
 

 
// development error handler 
 
// will print stacktrace 
 
if (app.get('env') === 'development') { 
 
    app.use(function (err, req, res, next) { 
 
     res.render('error', { 
 
      message: err.message, 
 
      error: err 
 
     }); 
 
    }); 
 
} 
 

 
// production error handler 
 
// no stacktraces leaked to user 
 
app.use(function (err, req, res, next) { 
 
    res.render('error', { 
 
     message: err.message, 
 
     error: {} 
 
    }); 
 
}); 
 

 
io.on('connection', function (socket) { 
 
    console.log('A connection was made!'); 
 
    socket.on('chat.message', function (message) { 
 
     console.log('New Message : ' + message); 
 
    }); 
 
}); 
 

 

 

 
module.exports = app;

我没有收到来自节点服务器套接字响应。请让我知道,如果我没有正确解释或任何东西不在这里。

服务器端口列表中,你可以看到这个screenshort或我的项目结构

Project structure & app listening port OR NPM START CODE

+0

你是否在某处叫'app.listen(port)'或'server.listen(port)'?您的服务器没有收听任何内容,因此您无法访问它。 – Seblor

+0

我也上传了我在github上的代码示例,在这里你可以找到我的代码:github.com/ferozpuri/node-app只是几个文件来创建我的场景 – ferozpuri

+0

你需要'server'(来自'http'模块)听,不直接表示('app')。 (参考https://socket.io/docs/#using-with-express-3/4) – Seblor

回答

0

您已设置的所有处理,但你没有初始化应用程序。

http.listen(app.get('port'), function() { 
    console.log('App is listening on port', app.get('port')); 
}); 
+0

谢谢Jan,这不适合我,快递服务器已经在端口3000上运行了。添加了这行代码后,我获取错误“TypeError:http.listen不是函数” – ferozpuri

0

您没有启动服务器。在你的代码,你的服务器与该行创建:

var server = require('http').Server(app); 

因此,一段时间后,你需要添加:

server.listen(80); // or use whatever port number you want the server on 
+0

感谢您的帮助,但仍然套接字没有绑定我的事件,我仍然无法看到我的日志在这个URL:https://www.dropbox.com/s /athkd5bve6yc9f4/socket%20issue.png?dl=0 – ferozpuri

+0

@ferozpuri - 请显示您的客户端代码。另外,你运行的是什么版本的socket.io?而且,为什么您的socket.io URL有POST请求。那里有什么不对。 – jfriend00

+0

这是我的代码示例的链接。您可以在“SocketController.js”文件中找到客户端代码 小代码不占用您太多时间 https://www.dropbox.com/s/tnyvpec1yzeje82/chat-app.zip?dl=0 – ferozpuri

0

我已经解决了这个问题,通过在构建添加的代码下面一行我的快递/后var app = express();

var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(3000); @ jfriend00和@Sablor,感谢你们俩的告诉我正确的方向。我的服务器已经在端口“3000”上运行,所以端口80没有工作。因为它与我的XAMPP服务器冲突。谢谢你们参与