我正在使用节点中的websocket
,我正在尝试实现一个broadcast
方法,该方法将向所有客户端发送消息,但发送消息的客户端除外。
要做到这一点,我需要知道
export class WebSocketRoom {
private _clients: WebSocketConnection[] = []
public get clients(): WebSocketConnection[] { return this._clients }
public broadcast(event: string, message: any) {
this.clients.forEach(client => {
client.emit(event, message)
})
return this
}
}
要访问方法broadcast
,请执行以下操作:
class Test extends Module {
public constructor(client: WebSocketConnection) {
super(client)
let room = new WebSocketRoom('hi')
room.broadcast('cool', 'sweet')
}
}
我尝试执行WebSocketRoom.caller
的控制台日志,但这给了我这个错误:
TypeError:'caller'和'arguments'是受限制的函数属性,在此上下文中无法访问。
有没有办法可以在broadcast
方法中访问调用broadcast
的对象而不将其作为参数传递?
this.clients.forEach(client => {
if(client == sender) return
client.emit(event, message)
})
在C#中,它是这样完成的:
public static void MyMethod(this GameObject obj, int var1, int var2) {
obj.add(var1, var2)
}
MyMethod(1,2)
正如你所看到的,obj在被调用时没有传入。