需求
Egret项目后端需要在子协议带入token
思路
Egret引擎对外接口不支持子协议, 通过重写引擎方法实现此功能
实现
/**
* 给 WebSocket 添加子协议
*/
public static fixWebSocketProtocol() {
egret.web.HTML5WebSocket.prototype.connectByUrl = function (url: string): void {
this.socket = new window["WebSocket"](url, DataManager.ins().token);
this.socket.binaryType = "arraybuffer";
this._bindEvent();
};
egret.WebSocket.prototype.connectByUrl = function(url:string):void {
if(!this._connecting && !this._connected) {
this._connecting = true;
this.socket.connectByUrl(url, DataManager.ins().token);
}
};
}
注:
需要在调用 connectByUrl 方法前, 执行 fixWebSocketProtocol() 方法.