2013-08-23 105 views
-1

在客戶端:從客戶端JavaScript函數調用socket.emit('init','data')不執行。

<a href='javascript:callInit();'> Get Init </a> 

客戶端HTML包括以下上面的腳本:

<script src="/socket.io/socket.io.js"></script> 
<script>var socket = io.connect('http://localhost:3000'); 
function callInit(){ 
    alert('inside callInit'); 
    socket.emit('init', 'data'); 
} 
</script> 

在服務器端:

io.sockets.on('connection', function(socket) { 
console.log('socket connection established'); 
    socket.on('init', function(data){ 
    console.log('init invoked'); 
    init(); 
    }); 
}); 

在上面的代碼:alert('inside callInit')執行。執行console.log('socket connection established');。但是console.log('init invoked);`不執行。

+0

什麼? – Joseph

+0

@JosephtheDreamer是警報功能。就這樣。 – Swagg

+0

控制檯....不是瀏覽器窗口@Swagg – Neal

回答

1

這是因爲io.connection(...)異步並且在調用callInit函數時可能未連接套接字。

你可能要添加一個on('connect', ....)到瀏覽器端套接字連接和on('error', ...)檢查連接和錯誤瀏覽器的控制檯上

+1

咦?請閱讀文檔.... – Neal

+0

http://socket.io/#how-to-use是文檔。你怎麼做sockets.on('連接')不在這裏。另外還有 – Swagg

+0

。我手動調用了函數callInit,所以我可以管理時間間隔,以實現連接。所以可能有另一種解釋 – Swagg

相關問題