Я пытаюсь создать свой собственный класс WebSocket.
function WebConnect(){
WebSocket.call(this, "wss://ws.achex.ca/")
}
WebConnect.prototype = Object.create(WebSocket.prototype);
WebConnect.prototype.onopen = function(evt){ console.log(evt) }
...
WebConnect.prototype.anotherWsFunction = function(){...}
Но когда я пытаюсь создать этот класс var a = new WebConnect()
, я застреваю в этой ошибке:
"Uncaught TypeError: Не удалось создать 'WebSocket': используйте оператор 'new', этот конструктор объекта DOM нельзя вызвать как функцию."
Я не понимаю, что я делаю неправильно.
Я пытаюсь сделать это таким образом, потому что я хотел бы определить "onopen, onclose, .." уже определенные события плюс некоторые пользовательские методы при создании этого класса, поэтому я можете использовать их позже в другом классе
function SOCKET(props){
this.websocket = new WebConnect();
this.lobby = new Lobby();
...
}
EDIT:
class WebConnect extends WebSocket {
constructor(wsuri) {
super(wsuri)
}
onopen(event) {
console.log("Connection open event:");
console.log(event);
}
onclose(event) {
console.log("Connection closed event:");
console.log(event);
}
onerror(event) {
console.log("Connection error event:");
console.log(event);
}
onmessage(event) {
console.log("Message event:");
console.log(event);
}
}
после комментария @PatrickRoberts подход класса ES6 тоже не работает
если var a = new WebConnect(wsuri)
, то a.onopen == null
EDIT:
Есть идеи, пожалуйста? Прямо сейчас я использую обертку. Но возможно ли сделать это «расширением класса»?