(function (window, mars3d) { //创建widget类,需要继承BaseWidget class MyWidget extends mars3d.widget.BaseWidget { //弹窗配置 get view() { return { type: "divwindow", url: "view.html", windowOptions: { width: 400, height: 110, }, }; } //每个窗口创建完成后调用 winCreateOK(opt, result) { var that = this; var lasturl = haoutil.storage.get("plot_ws"); if (lasturl) { $("#txtWSUrl").val(lasturl); that.connectionWS(lasturl); } $("#txtCoonWS").click(function () { var url = $("#txtWSUrl").val(); haoutil.storage.add("plot_ws", url); that.connectionWS(url); }); $("#txtColseWS").click(function () { that.closeSocket(); }); } //激活插件 activate() {} //释放插件 disable() { this.viewWindow = null; } showMsg(msg) { $("#lblMsg").html(msg); } /** * WebSocket客户端 * 使用说明: * 1、WebSocket客户端通过回调函数来接收服务端消息。例如:webSocket.onmessage * 2、WebSocket客户端通过send方法来发送消息给服务端。例如:webSocket.send(); */ connectionWS(webSocketUrl) { var that = this; this.closeSocket(); /** WebSocket客户端 PS:URL开头表示WebSocket协议 中间是域名端口 结尾是服务端映射地址 */ var webSocket = new WebSocket(webSocketUrl); /** 当服务端打开连接 */ webSocket.onopen = function (event) { console.log("WebSocket打开连接"); that.showMsg("已连接"); }; /** 通信失败 */ webSocket.onerror = function (event) { console.log("WebSocket发生异常"); that.showMsg("连接发生异常"); }; /** 关闭连接 */ webSocket.onclose = function (event) { console.log("WebSocket关闭连接"); that.showMsg("连接已关闭"); }; /** 当服务端发来消息:1.广播消息 2.更新在线人数 */ webSocket.onmessage = function (event) { console.log("WebSocket接收到消息"); console.log(event.data); var data = JSON.parse(event.data); that.config.updateAttr(data); }; this.webSocket = webSocket; return webSocket; } closeSocket() { if (this.webSocket) { this.webSocket.close(); delete this.webSocket; } } sendSocket(json) { if (!this.webSocket) { return; } console.log("发送了WebSocket消息"); console.log(json); this.webSocket.send(JSON.stringify(json)); } } //注册到widget管理器中。 mars3d.widget.bindClass(MyWidget); //每个widet之间都是直接引入到index.html中,会存在彼此命名冲突,所以闭包处理下。 })(window, mars3d);