我正在尝试将以下代码(套接字模块和io
函数除外)放入单独的js文件中以供重用。
index.js
var express = require('express'),
app = express(),
http = require('http').createServer(app),
url = require('url'),
cookieParser = require('cookie-parser'),
io = require("socket.io").listen(http), // question with this line
app.use(cookieParser());
app.get('/p/:tagId', function(req, res){
key = req.cookies["phpsession"];
var filename = req.param("tagId");
res.sendfile(filename+'.html');
});
io.on('connection', function(socket){
//..Other code....//
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
这是我尝试遵循此guide:
server.js
var express = require('express'),
app = express(),
http = require('http').createServer(app),
url = require('url'),
cookieParser = require('cookie-parser'),
module.exports = {
express_app : function(){
app.use(cookieParser());
app.get('/p/:tagId', function(req, res){
key = req.cookies["phpsession"];
var filename = req.param("tagId");
res.sendfile(compare+filename+'.html');
});
},
server_http: function(port){
http.listen(port, function(){
console.log('listening on *:'+port);
});
}
}
index.js
var server = require('./server');
server.express_app();
server.server_http(3000);
var io = require("socket.io").listen(server.server_http(3000));
io.on('connection', function(socket){......
这是创建和导出模块的适当方法吗?我不确定新的index.js中的这一行:
server.server_http(3000);
var io = require("socket.io").listen(server.server_http(3000));
好像我正在调用http.listen
两次,一旦我运行服务器,console.log就会给我重复的listening on *:3000
。你能给我一些关于如何更改服务器的建议。 JS。
答案 0 :(得分:1)
请尝试使用socket.io问题。
在Server.js中:
server_http: function(port, callback){
http.listen(port, function(){
callback(this); // this = server instance
console.log('listening on *:'+port);
});
}
index.js:
server.server_http(3000, function (server) {
var io = require("socket.io").listen(server);
io.on('connection', function(socket){......
});