2014-10-11 95 views
0

我們有一個Laravel項目,但是,應用程序的某些部分做了很多輪詢,所以我們決定將socket.io引入到應用程序中。 Laravel依賴Apache監聽端口80(我們在前端使用jQuery和Bootstrap)。我們的本地測試主機名是test.localhost.com。節點服務器只是我們創建的服務器,它在端口1000上進行偵聽,並安裝了express和socket.io。Laravel(PHP)與socket.io的混合

在我們的Laravel頁面中,我們有以下內容:<script src="//localhost:1000/socket.io/socket.io.js"></script>。作爲一個測試,我們有我們的前端下面的代碼:

<script> 
$(document).ready(function() { 
    var socket = io(); 
    $("#msg").keyup(function(event) { 
     if (event.keyCode === 13) { 
      socket.emit($("#msg").val()); 
      $("#msg").val(''); 
     } 
    }); 
}); 
</script> 

但是,當我嘗試發送一個消息,沒有收到對節點的一面,但在Chrome控制檯我注意到以下幾點:

GET http://test.localhost.com/socket.io?EIO=3&transport=polling&t=1413006253169-84 404(Not Found),在socket.io.js的第2680行發生錯誤。我打開文件並轉到第2680行,並參見xhr.send(this.data);。這是怎麼回事?我能否混合2個代碼庫?爲什麼它試圖GET在test.localhost.com時導入我使用localhost:1000(不同的主機和不同的端口)?

回答

0

好吧,我明白了。當你創建你的連接時,socket.io假設你連接到localhost:80。如果不是,那麼你可以明確指定你的服務器主機:

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