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(...);