簡體   English   中英

我無法將 object 和 socket.io function socket.emit() 發送到節點服務器。 如何使用函數獲取這些數據?

[英]I can`t send my object with socket.io function socket.emit() to node server. How can I take this data with functions?

我有一個點 object,我想用 socket.emit('add_dot_init', new Dot()) 發送到節點服務器但是當我發送這個數據時,我的服務器像這樣得到這個 object { x: 15, y: 75, alp: 3.487639104390228 }

我想做的事? 這個點 object 將是一個客戶端 object。客戶端將控制這個點。所以我從服務器取回這些數據並在這個 class 中運行 move() function,例如:

dots.push(new Dot())
dots[0].move();

但我無法從服務器收回這個 object 因為它來了

{ x: 15, y: 75, alp: 3.487639104390228 }

如何使用函數獲取這些數據?

class Dot{
constructor(){
    this.x = 15;
    this.y = 75;
    this.alp = random(51)
}

move(){
    dot.x +=5;
}

show(){
    fill(0);
    ellipse(this.x,this.y,30,30);
}

}

通信是通過 websocket 完成的,因此在幕后,您只是將 JSON 字符串發送到服務器並返回給客戶端。 這意味着無論何時將 Dot 實例傳輸到 websocket,它都會被序列化和反序列化為常規的 javascript object,而無需任何自定義方法。 如果你想在服務器或客戶端上使用 The Dot,你將不得不使用一個構造函數,該構造函數將根據它從 websocket 接收到的普通 object 對其進行初始化:

class Dot{
    constructor(dot){
        if (dot) {
            this.x = dot.x;
            this.y = dot.y;
            this.alp = dot.alp;
        } else {
            this.x = 15;
            this.y = 75;
            this.alp = random(51)
        }
    }

    move(){
        dot.x +=5;
    }

    show(){
        fill(0);
        ellipse(this.x,this.y,30,30);
    }
}

在服務器/客戶端上收到消息后,只需調用const dot = new Dot(response); 其中response是您通過 websocket 收到的值,那么您可以使用dot.move方法

我有一個點 object,我想用 socket.emit('add_dot_init', new Dot()) 發送到節點服務器但是當我發送這個數據時,我的服務器得到這個 object 像這樣{ x: 15, y: 75, alp: 3.487639104390228 }

我想做的事? 這個點 object 將是一個客戶端 object。 並且客戶端將控制這些點..所以我從服務器取回這些數據並在這個 class 中運行 move() function ,例如:

dots.push(new Dot())
dots[0].move();

但我不能從服務器收回這個 object 因為它來了

{ x: 15, y: 75, alp: 3.487639104390228 }

如何使用函數獲取這些數據?

class Dot{
constructor(){
    this.x = 15;
    this.y = 75;
    this.alp = random(51)
}

move(){
    dot.x +=5;
}

show(){
    fill(0);
    ellipse(this.x,this.y,30,30);
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM