gpt4 book ai didi

javascript - 将socket.io封装在一个类中

转载 作者:行者123 更新时间:2023-12-02 22:15:22 27 4
gpt4 key购买 nike

我试图将socket.io封装在一个类中,这样我就可以在多个文件中共享同一个套接字(使用导入)。如果您只使用一个文件,这是使用 WebSocket 的常见方法

Test.js

let ip = "http://localhost/";
let socket = io(ip);
socket.emit("message", {"content": "hello"});

socket.on("messageResponse", function(content) {
//Do something here.
});
<小时/>

我想要实现的是..

多人游戏/Socket.js

class Socket {
constructor(ip) {
this.socket = io(ip);
}

sendMessage(message, data) {
this.socket.emit(message, data);
}
}

export default Socket;

A.js

import Socket from "./multiplayer/Socket.js";

//listen to certain events here like socket.on("connect")

B.js

import Socket from "./multiplayer/Socket.js";

//listen to some other events here like socket.on("chatMessage")

但我不知道如何封装 on 事件。我使用汇总将脚本捆绑在一个文件中。

谢谢!

最佳答案

您似乎想创建一个单例

您可以通过导出所有东西都将共享的套接字对象版本来做到这一点:

class Socket {
constructor(ip) {
this.socket = io(ip);
}

sendMessage(message, data) {
this.socket.emit(message, data);
}
}

export default new Socket('some_ip');

然后在您的代码中您可以执行以下操作:

import s from "./multiplayer/Socket.js";

s.socket.on('something', doSomething);

并且您导入该套接字对象的每个位置都会共享所有相同的信息

关于javascript - 将socket.io封装在一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59400113/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com