2017-04-23 73 views
0

我在做socket.io聊天教程,到目前爲止一切正常。但我不明白的客戶端如何使用socket.io代碼:我的HTML頁面如何在客戶端訪問socket.io?

<!-- Load socket.io client-side --> 
<script src="/socket.io/socket.io.js"></script> 
<script src="https://code.jquery.com/jquery-1.11.1.js"></script> 
<script> 

    $(function(){ 

     var socket = io(); 

     $('form').submit(function(){ 
      socket.emit('chat message', $('#m').val()); 
      $('#m').val(''); 
      return false; 
     }); 

     socket.on('chat message', function(msg){ 
      $('#messages').append($('<li>').text(msg)); 
     }); 

    }); 

所以它是從「/socket.io/socket.io.js」訪問,但我沒有任何地方在我的文件夾中。我不明白HTML網頁如何訪問socket.io.js文件。不知道該怎麼問。這個.js文件在哪裏?

+0

您是否正在按照https://socket.io/get-started/chat/上的教程進行操作?有一條規定:「在開發過程中,socket.io自動爲我們提供服務,我們將會看到,所以現在我們只需要安裝一個模塊」。所以看起來socket.io爲路徑'/ socket.io/socket.io.js'安裝了一個處理程序。我對socket.io沒有任何經驗,但我想你有責任在生產環境中爲腳本提供服務。 –

+0

是的,我確實讀過這個部分,但我仍然對處理程序以及如何或在何處獲得.js文件感到困惑。是的,這是教程。 –

+0

如果我沒有弄錯,在'socket.io/lib/index.js'的第101行處理客戶端腳本:https://github.com/socketio/socket.io/blob/master/lib/ index.js#L101。 –

回答

1
<script src="/socket.io/socket.io.js"></script> 

在上面的腳本文件socket.io.js會在目錄node_modules/socket.io客戶端

所以可用,如果你想要做這樣的事情,

<script src="socket.io.js"></script> 

然後複製文件從node_modules/socket.io-client/socket.io.js 並粘貼到您的服務器目錄中。

即將到來的下一個問題如何連接到客戶端的服務器,這裏是您編輯的代碼連接到客戶端的服務器。

$(function(){ 

    var socket = io("http://yourserver.com"); 

    $('form').submit(function(){ 
     socket.emit('chat message', $('#m').val()); 
     $('#m').val(''); 
     return false; 
    }); 

    socket.on('chat message', function(msg){ 
     $('#messages').append($('<li>').text(msg)); 
    }); 

}); 

在上面的代碼中http://yourserver.com是你的節點服務器正在運行,如果在的LocalServer做下線那麼它可以是這樣的地址,

var socket = io("http://192.168.0.103:3000"); 

在上面的代碼3000的端口在哪個服務器上運行,並且192.168.0.103將會替換你的本地IP地址。 希望這會有所幫助。

+0

以上答案是用於連接客戶端到服務器,如果您的客戶端文件由不同的服務器提供服務,比如說您的index.html位於apache服務器上,並且您的節點服務器運行在不同的地址。如果您的文件僅由節點服務器提供服務比你不必指定服務器的地址,它會像var socket = io(); –

+1

我專注於答案的第一部分,我理解連接是如何工作的。我只是很好奇客戶端是如何找到socket.io JavaScript文件的:你說它在node_modules中查找它,但我不明白,單詞「node_modules」甚至不在腳本標籤的src屬性中。它如何知道在那裏找到它? –

+0

其實我也很困惑它是如何獲得該文件,但一些我如何發現並找到該文件,並在複製該文件後,它爲我工作 –