Understanding socket.io.js
Understanding socket.io.js
我试图了解socket的Javascript客户端代码。io的作品。具体来说,我的目标是理解,它是如何知道服务器的位置的?
我在程序中使用的客户端代码非常简单-我只链接到socket.io.js:
<script src="./socket.io/socket.io.js"></script>
然后:
var socket = io.connect()
就是这样-套接字自动连接到服务器。但是它是怎么知道的呢?
我看了看socket.io.js,这是我发现的(注释修剪):
var io = ('undefined' === typeof module ? {} : module.exports);
(function() {
/** Copyright(c) 2011 LearnBoost <dev@learnboost.com> * MIT Licensed */
(function (exports, global) {
var io = exports;
io.version = '0.9.11';
io.protocol = 1;
io.transports = [];
io.j = [];
io.sockets = {};
/**
* Manages connections to hosts.
* @param {String} uri
* @Param {Boolean} force creation of new socket (defaults to false)
* @api public
*/
io.connect = function (host, details) {
var uri = io.util.parseUri(host)
, uuri
, socket;
if (global && global.location) {
uri.protocol = uri.protocol || global.location.protocol.slice(0, -1);
uri.host = uri.host || (global.document
? global.document.domain : global.location.hostname);
uri.port = uri.port || global.location.port;
}
uuri = io.util.uniqueUri(uri);
...
})('object' === typeof module ? module.exports : (this.io = {}), this);
...
})();
似乎秘密是在"全局"参数,但是,究竟是谁发送"全局"到这个函数?
您要查找的模式是:
(function (exports,global) {
///content
}) (<whatever>, this);
this
引用是执行该函数的作用域(此模式既定义函数又执行函数),它恰好是全局作用域。有关javascript作用域的更多信息,请参阅这里- http://tore.darell.no/pages/scope_in_javascript
相关文章:
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 通过node.js和socket.io向特定用户发送数据
- 如何使用Socket.io和Node.js开发大型聊天应用程序
- 通过node.js和socket.io在两个用户之间发送消息
- Node.js-socket.io-对io.sockets的引用突然未定义
- WebRTC,socket.io,node.js:无法读取属性'发射'的未定义
- nginx/angular/node.js带有 prerender.io 的根URL
- 使用 socket.io 时如何发送文件(html,js,css和资源)
- 无法加载套接字.io.js
- 合并 socket.io 和快速.js会话
- 使用 Node.js 和 socket.io 和 fs 动态显示图像
- 在node.js/ssocket.io中,如何判断对象是否是套接字的实例
- Angular.js-Socket.io事件更新模型,而不是视图
- Node js redis socket.io pubsub实时更新
- 在brunc.io中创建一个自定义JS目录
- Node.js/Socket.io适用于除Firefox之外的所有应用程序,这可能是缓存问题
- 异步节点.js IO 的概念
- Sails.js IO.socket not firing
- arangob教程难度:Node.js(io.js)10分钟
- 部署Aurelia.js + io.js/node.js应用来解决Github速率限制问题