无法连接到生产中的套接字io

时间:2015-02-02 04:57:22

标签: angularjs node.js sockets

我无法在生产中连接到socket.io.它在我的开发服务器中工作正常,但我没有得到#34; websocket用户连接"生产中控制台中的消息,我的热图不会填充测试数据。我在浏览器jscript控制台中获取了net :: ERR_CONNECTION_TIMED_OUT。

来自服务器:

io.origins('http://example.com/path:8080')

    app.get('/somepath', function (req, res, next) {
        // code here

        io.emit('update', data)
        console.log('update has been emitted') // this prints and I see the data object in the console
        res.end("OK")
    })

io.on('connection', function (socket) {
    console.log('websocket user connected')
});
来自角度控制器的

$http.get('http://example.com/somepath?'+str) // hits somepath with test data in query string 'str'
来自/ path:

中的脚本的

var socket = io('http://example.com:8080');

我还在页面/路径

中包含了cdn for socket.io
<script src="https://cdn.socket.io/socket.io-1.3.2.js"></script>

1 个答案:

答案 0 :(得分:1)

问题是我必须在开发服务器的URL中包含端口号,但如果我在生产服务器中使用该端口,它将不会建立连接。我不确定为什么会这样,但我想这个端口隐含在我的浏览器的请求中,并且如果明确说明,可能关于该格式的某些内容使其无法识别。

我所做的改变:

我从服务器上删除了io.origins语句,因为socket.io的默认设置是允许任何原点。这消除了一个可能的错误来源。

我从角度控制器中的$ http.get()中删除了端口号,并在另一个脚本中更改了var socket = io('http://example.com:8080') to var socket = io('http://example.com')