Как javascript websocket вызвать функцию в onmessage? - PullRequest
0 голосов
/ 20 ноября 2018
    websocketstart()
    {
        exampleSocket = new WebSocket('ws://127.0.0.1:8000');
        exampleSocket.onopen = function() {
            // alert('handshake successfully established. May send data now...');
            // exampleSocket.send('hello!!!')
        };
        exampleSocket.onmessage = function(event) {
            let result = JSON.parse(event.data);
            if(result.error == false)
            {
                console.log("ERROR : " + result.parent.message);
                alert('error');
                return;
            }
            this.wantcallfunction(); //<---- SCRIPT438: Object doesn't support property or method 'wantcallfunction'
            return;
        };
        exampleSocket.onclose = function() {
            alert('connection closed');
        };
    }

    wantcallfunction()
    {

    }

this.wantcallfunction (); // <---- SCRIPT438: объект не поддерживает свойство или метод wantcallfunction </p>

Есть ли другой способ вызвать функцию изнутри сообщения?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018
static instance : MySocketTest 

MySocketTest.instance = this;

exampleSocket.onmessage = function(event) {
MySocketTest.instance.wantcallfunction();

Решено.

Нет ошибок, но я не знаю, правильно ли это.

0 голосов
/ 20 ноября 2018

Используйте функции стрелок, чтобы сохранить класс this в качестве класса.

Изменить

exampleSocket.onmessage = function(event) {
    // `this` is not the class

На

exampleSocket.onmessage = (event) => {
    // `this` is  the class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...