【发布时间】:2016-05-26 16:51:26
【问题描述】:
我不明白为什么我的连接等待本地主机,然后最终超时。我已经阅读了我的代码一百万次,现在我被难住了。请帮忙。它说它正在侦听端口..
另外,我已经编辑了一些代码,但正如您所见,我需要在同一个端口上运行我的套接字、express 和 http。提前谢谢!
var express = require("express");
var server = require ("http").createServer(app)
var io = require("socket.io")(server);
var mongo = require("mongodb").MongoClient;
var bodyParser = require("body-parser");
var methodOverride = require('method-override');
var logger = require('morgan');
var serveStatic = require('serve-static');
var errorhandler = require('errorhandler');
var path = require('path');
var app = express();
app.set('port', process.env.PORT || 8080);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(methodOverride());
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(serveStatic(path.join(__dirname, 'public')));
if (process.env.NODE_ENV === 'development') {
app.use(errorHandler());
}
app.get("/", function(req, res) {
res.send("index")
});
io.on("connection", function(socket) {
console.log("a user connected..");
mongo.connect(MONGOLAB_URI, function(err, db) {
if(err) {
console.log("error connecting to mongo db")
} else {
var collection = db.collection("chat messages")
var stream = collection.find().sort().limit(10).stream();
stream.on("data", function(chat) {
console.log("emitting chat");
socket.emit("chat", chat.content);
});
}
});
socket.on("disconnect", function() {
console.log("user disconnected");
});
socket.on("chat", function (msg) {
mongo.connect(MONGOLAB_URI, function(err, db) {
if(err) {
console.log("error");
} else {
var collection = db.collection("chat messages");
collection.insert({content: msg}, function(err, doc) {
if (err) {
console.log("error insterting msg to database")
} else {
console.log("inserted " + msg + "to db - content")
}
});
}
});
socket.broadcast.emit("chat", msg);
});
});
server.listen(app.get("port"), function (err, data) {
if (err) {
console.log(err)
};
console.log("listening on " + app.get("port"));
});
【问题讨论】:
标签: node.js express websocket socket.io