你如何在同一个端口上运行express和socket.io

时间:2014-11-10 23:49:16

标签: node.js heroku express socket.io

它总是很烦人我必须总是在我的app.js中监听一个新端口,这意味着我可以访问我的网站localhost:3000和localhost:4000和我的网站上的socket.io只能使用localhost:4000。我只是把它推到了heroku,并意识到我甚至无法改变heroku上的端口

这就是我所拥有的

app.js:

var express = require("express");
var io = require('socket.io')
var port = 3000;

var app = express()
  , server = require('http').createServer(app)
  , io = io.listen(server);

server.listen(3000);

module.exports = io;

client.js:

var socket = io('http://localhost/');

2 个答案:

答案 0 :(得分:3)

我能够做你想做的事:

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

//setup stuff

server.listen(3000)

答案 1 :(得分:1)

最简单版本的express 4 + socket.io 1.0(我自己使用)是这样的:

var express = require('express');
var app = express();
var server = app.listen(3000, function() {
    console.log("server started on port 3000");
});

var io = require('socket.io').listen(server);

我真的不知道为什么你的版本不起作用,但已经建议几个人遵循这个顺序(我从文档中得到)并且它对我自己和他们都有效。这可能与io适当插入Express 4并且不使用常规http模块有关,而是使用express