2017-04-23 122 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

其实我也很困惑它是如何获得该文件,但一些我如何发现并找到该文件,并在复制该文件后,它为我工作 –