簡體   English   中英

在生產中無法連接到套接字io

[英]can't connect to socket io in production

我無法在生產中連接到socket.io。 它在我的開發服務器上工作正常,但是在生產控制台中沒有收到“ 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'

從/路徑中的腳本:

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

而且我還在/ path頁面中包含了socket.io的CDN

<script src="https://cdn.socket.io/socket.io-1.3.2.js"></script>

問題是我必須在開發服務器的URL中包括端口號,但是如果在生產服務器中使用該端口,它將無法建立連接。 我不確定為什么會這樣,但是我想我的瀏覽器發出的請求中暗含了該端口,如果明確指出,則有關格式的某些信息會使它無法識別。

我所做的更改:

我從服務器上刪除了io.origins語句,因為socket.io的默認設置是允許任何起源。 這消除了一種可能的錯誤源。

我從角度控制器的$ http.get()中刪除了端口號,並將var socket = io('http://example.com:8080') to var socket = io('http://example.com')在另一個腳本中

暫無
暫無

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

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