首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从不同的文件中侦听websocket的onmessage事件?

如何从不同的文件中侦听websocket的onmessage事件?
EN

Stack Overflow用户
提问于 2022-11-10 08:23:59
回答 1查看 35关注 0票数 1

我正在使用Phaser 3创建一个多人游戏,我创建了一个Socket.js文件,其中我创建了一个websocket实例,并定义了用于侦听websocket事件的函数。

代码语言:javascript
运行
复制
let websocket;
const url = "wss://abc/dev";

export const socketInit = () => {
    websocket = new WebSocket(url);
    websocket.onopen = (evt) => {
        onOpen(evt);
    };
    websocket.onclose = (evt) => {
        onClose(evt);
    };
    websocket.onmessage = (evt) => {
        onMessage(evt);
    };
    websocket.onerror = (evt) => {
        onError(evt);
    };
};

export const sendMessage = (message) => {
    console.log("SENT: " + JSON.stringify(message));
    websocket.send(JSON.stringify(message));
};

const onOpen = (evt) => {
    if (websocket.readyState === 1) {
        console.log("WEBSOCKET CONNECTED"); 
        }

};

const onClose = (evt) => {
    console.log("CLOSE", evt);
};

const onMessage = (evt) => {
    console.log(evt.data);
};

const onError = (evt) => {
    console.log("Error", evt);
    websocket.close();
};

我有另一个名为mainScene.js的文件,在该文件中,我希望获取onMessage函数接收的数据。我想不出如何将数据传送到这个文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-10 10:01:13

取决于您想要传递数据的方式。如果您只是想将数据传递到当前场景。(而且只有一个场景,或者至少这个场景总是活动/当前的)

您可以简单地在场景中调用一个函数(例如passData__),如下所示:

代码语言:javascript
运行
复制
// I assume the mainScene.js could look something like this
class MainScene extends Phaser.Scene {
    ...
    passData(data){
        // ... do something with the data
    }
}


// from the file containing the socket script ...
// ... and if the game variable of the Phaser.Game is defined globaly.
const onMessage = (evt) => {
     game.scene.keys.MainScene.passData(evt.data);
};

顺便说一下:有一些很好的例子,如何用相位就像这个创建一个多人游戏,它是过时的,但应该包括基本的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74386031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档