websocket的一些问题,求大佬

  • Creator 版本: v2.3.1

  • 目标平台: 浏览器/ iOS / Android / 模拟器

  • 代码:

let ws = new WebSocket(‘ws://192.168.1.36:2021’);

cc.Class({

onLoad() { 在这里获取不到 ws,无法使用,但是在这里声明的话,我其它函数就使用不了ws.send }

})

求解 这个 ws 声明怎样才是全局使用的?

还有一个服务端问题,JSON.stringify(data),这个data内因为还有其它的全局的json 所以会报:
TypeError: Converting circular structure to JSON
但是我一定得传给客户端 看了网上的方法都没什么好用的

求大佬速来支支招:joy:

1.建立全局的WebSocket
2.没明白意思 是只data包含两个json?

1、应该如何建立,百度都没有:joy:主要很急改
2、举例
var roomData = [{},{}]

var sendData = {
type: ‘发送’,
data: roomData[0]
}

socket.sendText(JSON.stringify(sendData’));

单例对象啊,把数据和操作打包到一起, 组件脚本里面只要import 然后实例化
组件脚本和 普通脚本要区分清除

1.window.Global 建立全局的 window.Global.ws = new WebSocket(‘ws://192.168.1.36:2021’);

试了,不行

cc 就是全局对象,在游戏加载的时候 cc.ws = new websocket() 就可以了,在其他地方就可以使用cc.ws.send();

感谢老哥 好像是可以了
我是把cc.ws = new websocket() 放在onLoad()内
其它函数可以发送
但是我有个疑问,如果这个场景js这么写,那么我另外场景也需要另一个cc.ws = new websocket(),会不会冲突,还是这个全局只是针对单文件内

关于 JSON.stringify(sendData)
sendData内有其它引用的 json 一直无法传输
TypeError: Converting circular structure to JSON
真的很头疼
数据都是要的 求解 应该怎么做

方法有很多,比如可以通过常驻节点来做,
https://docs.cocos.com/creator/manual/zh/scripting/scene-managing.html#通过常驻节点进行场景资源管理和参数传递

在常驻节点挂一个组件,websocket对象放这个组件里面

如果是ts的代码。用以下方式

let ws = new class{
   send(){
    //todo
   }
}();
window["ws"] = ws;

ws.send();

可以全局。任意使用。简单易控,省心