【发布时间】:2015-05-21 02:44:01
【问题描述】:
我无法在 node.js 中运行 socket.io 代码,console.log() 在运行代码时也不显示。下面是代码。
app.js
var express = require('express');
var http = require('http');
var app = express();
app.set('port', process.env.PORT || 3000);
app.post('/testStream',test.testStream);
var server = http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
module.exports.appServer = server;
我已经创建了一个 test.js 文件,我在其中访问这个导出的变量 appServer。
var server = require('../app.js');
exports.testStream = function(req,res){
var io = require('socket.io').listen(server.appServer);
io.on('connection',function(socket){
console.log("in socket");
fs.readFile('E:/temp/testimg.png',function(err,buf){
socket.emit('image',{image: true,buffer: buf});
console.log("test image");
});
})
}
当代码运行时,它会卡住并且不显示 console.logs()。我在这里做错了什么。非常感谢任何帮助。
【问题讨论】:
-
@cbass,这一行已经在代码中了。我可以更新问题吗?
-
http createServer 不同步,因此当您导出该模块时,该服务器未启动,请尝试使用 process.nextTick() 使该代码异步
-
@Tim,谢谢。你能用一些例子指导我吗?这对我真的很有帮助。
-
嘿,这里的主要问题是你从 app.js 导出了错误的变量,你检查了 doc socket.io,你假设导出了 http.createServer(app),你绑定了错误的 var
-
@Tim,我不是在给 var server 赋值吗?我想这应该可以工作 var server = http.createServer(app).listen(app.get('port'), function(){ console.log('Express server监听端口' + app.get('port') ); });