Socket.io 在生产中不起作用
Socket.io doesn't work in production
我已经在 localhost 上试过 socket.io 并且效果很好。但是,在生产中出现以下错误:
GET http://77.235.46.164:3000/socket.io/?EIO=3&transport=polling&t=1448754369321-21 net::ERR_CONNECTION_TIMED_OUT
在服务器端我有以下代码:
var express = require('express');
var mysql = require('mysql');
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
connection.connect();
server.listen(process.env.PORT || 3000);
在客户端时:
var socket = io.connect('http://77.235.46.164:3000'); .... etcs
我也在启动节点服务器(我有 VPS 欧元帐户 VPS)。
我到处搜索,但似乎没有找到适合我的解决方案。
您可以自己创建一个 HTTP 服务器,而不是让 Express 框架为您创建一个,这样您就可以重用您的 HTTP 服务器,以保持相同的服务器实例。
你可以试试:
var express = require('express');
var app = express();
//Create your server
var server = app.listen(3000);
var io = require('socket.io')(server);
//Then you can listen for connection
io.on('connection', function(socket){
socket.emit('an event sent to all connected clients')
//Awesome things
})
是否在没有防火墙的情况下工作?
在某些受控网络中,防火墙可能会阻止 80,443 以外的 websocket 和端口。
我已经在 localhost 上试过 socket.io 并且效果很好。但是,在生产中出现以下错误:
GET http://77.235.46.164:3000/socket.io/?EIO=3&transport=polling&t=1448754369321-21 net::ERR_CONNECTION_TIMED_OUT
在服务器端我有以下代码:
var express = require('express');
var mysql = require('mysql');
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server);
connection.connect();
server.listen(process.env.PORT || 3000);
在客户端时:
var socket = io.connect('http://77.235.46.164:3000'); .... etcs
我也在启动节点服务器(我有 VPS 欧元帐户 VPS)。 我到处搜索,但似乎没有找到适合我的解决方案。
您可以自己创建一个 HTTP 服务器,而不是让 Express 框架为您创建一个,这样您就可以重用您的 HTTP 服务器,以保持相同的服务器实例。
你可以试试:
var express = require('express');
var app = express();
//Create your server
var server = app.listen(3000);
var io = require('socket.io')(server);
//Then you can listen for connection
io.on('connection', function(socket){
socket.emit('an event sent to all connected clients')
//Awesome things
})
是否在没有防火墙的情况下工作?
在某些受控网络中,防火墙可能会阻止 80,443 以外的 websocket 和端口。