我目前正在努力使用 TypeScript 在 NodeJs 上运行 WebSocket 服务器。作为 WebSocket 服务器实现,我使用ws。除此之外,我还使用@types/ws包进行打字。我希望服务器定期向每个连接的客户端发送 ping 包。ws 模块的自述文件已经提供了一个 JavaScript 实现示例,我也想使用它。您可以在这里找到示例实现:
我面临的问题是,示例实现将“isAlive”属性添加到套接字对象,这显然无法在 TypeScript 中执行,因为套接字类不存在“isAlive”属性。
我的问题:将此属性添加到套接字类的最佳方法是什么?由于我将这些套接字对象作为参数传递,因此我希望避免向以某种方式与套接字一起使用的所有文件添加某种额外的导入。
我想避免将套接字对象类型转换为任何类型。
我尝试围绕 ws 实现一个包装器类,以便我可以实例化我的 WebSocket 类并在整个应用程序中使用它。
我的班级看起来像这样
import * as ws from "ws";
export default class WebSocketServer {
private wss: ws.Server;
private onSubscription: (socket: ws, deviceId: string, topicFilter: string) => void;
constructor(port: number, onSubscription: (socket: ws, deviceId: string, topicFilter: string) => void) {
this.wss = new ws.Server({ port });
this.onSubscription = onSubscription;
const conhandler = this.handleConnection.bind(this); …Run Code Online (Sandbox Code Playgroud)