Quantcast
Channel: Cocos中文社区 - 最新帖子
Viewing all articles
Browse latest Browse all 494966

请教一个关于Socket.io的问题!

$
0
0

1、最简单的,每次引用socket的时候从全局对象中尝试获取连接,若无已建立的连接则建立一个新连接:

if (!window.Socket) window.Socket = io(url);
window.Socket.on(...);

2、进一步,如果游戏中大量使用连接,可以在游戏开始的时候就建立连接,以后直接获取即可:

// 游戏启动时:
window.Socket = io(url);
// 场景A和场景B中:
window.Socket.on(...);

3、比2好一点的方法,第一次需要连接的时候才建立连接:

// 游戏启动时:
Object.defineProperty(window, "Socket", {
    get: function() {
        if (!window._socket) window._Socket = io(url);
        return window._Socket;
    }
});
// 场景A和场景B中:
window.Socket.on(...)

4、模块化的方法(推荐),将创建连接封装成一个模块,方便自己以后管理和添加功能:

// 创建一个Socket.js文件,内容:
var Socket = {
    _instance: null,
    get instance() {
        if (!this._instance) this._instance = io(url);
        return this._instance;
    }
};
module.exports = Socket;
// 场景A和场景B中:
let Socket = require("Socket");
Socket.instance.on(...);

Viewing all articles
Browse latest Browse all 494966

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>