簡體   English   中英

Node.js - 在同一端口上使用Socket.io和Express

[英]Node.js - Using Socket.io and Express on the Same Port

我需要重構這個節點應用程序,所以socket.io和express使用相同的端口,我可以部署它。 它目前按原樣運行,但不會在Heroku上運行,除非所有內容都使用相同的端口。

var http = require('http');
var socket = require('socket.io');
var socketServer = http.createServer(app);
var io = socket.listen(socketServer);

var express = require('express');

var app = express();

var bodyParser = require('body-parser');
var path = require('path');

app.set('view engine', 'jade');

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));

// parse application/json
app.use(bodyParser.json());

app.use(express.static(path.join(__dirname, 'public')));

var routes = require('./config/routes')(app, io);
var timer = require('./server/timer')(app, io);

var server = app.listen(process.env.PORT || 5000, function () {
    console.log('Server running on *:5000');
});

socketServer.listen(8000);

我也只是學習節點,因此非常感謝任何有關重構的提示。

編輯匹配建議的解決方案:( Express以這種方式工作,但它打破了socket.io)

var express = require('express');
var app = express();
var serv = require('http').createServer(app);
var io = require('socket.io').listen(serv);

var bodyParser = require('body-parser');
var path = require('path');

app.set('view engine', 'jade');

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));

// parse application/json
app.use(bodyParser.json());

app.use(express.static(path.join(__dirname, 'public')));

var routes = require('./config/routes')(app, io);
var timer = require('./server/timer')(app, io);

serv.listen(process.env.PORT || 5000, function () {
    console.log('Server running on *:' + (process.env.PORT || '5000'));
});

這是控制台中的新錯誤:

socket.io-1.3.4.js:2 GET http:// localhost:8000 / socket.io /?user = Trey&EIO = 3&transport = polling&t = 1424902016787-2

看起來像websockets失敗所以它回落到長輪詢,這也失敗了...

我認為這應該有效。

var express = require('express')
var app = express()
var server = require('http').createServer(app)
var io = require('socket.io')(server)

server.listen(80);

Heroku還有一些關於這個主題的有用信息: heroku dev info websockets

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM