【问题标题】:Socket.io with Three.js Sphere (OrbitControls)Socket.io 与 Three.js Sphere (OrbitControls)
【发布时间】:2020-03-20 21:44:05
【问题描述】:

我现在正在做一些事情,但我无法让它工作。我有一个带有控件(THREE.OrbitControls)的three.js 球体(桌面上的“HTML1”)。

这在计算机和平板电脑上都运行良好。我想做的是通过我的 iPad 控制那个球体,所以我在我的 iPad 上运行的 HTML 文件 ("HTML2") 上加载了一个空白场景。那个空白的 three.js 球体还具有控制功能,我想将其发送到服务器(socket.io),该服务器应该将它们发送到桌面球体(“HTML1 em>”)。

我的服务器:服务器正在从平板电脑获取,但不发送(或桌面不接收)

io.on('connection', function(socket){
socket.on('cameraControls', function(controls){
        socket.emit('sendControls', function(controls) {
        console.log('Controls');
        });
    });
  console.log('a user connected');
});

ipad ("HTML2") 发送的内容(在函数渲染中加载):

socket.emit('cameraControls', function(controls){});

Desktop Sphere 接收到的内容(也在函数渲染中加载):

socket.on('sendControls', function(controls){
         //this.controls = controls;
         console.log("got EVENT");
});

有什么想法吗?这是我第一次与socket.io 合作。终端或控制台日志中没有错误,所以我不确定我做错了什么。

【问题讨论】:

    标签: javascript ipad socket.io three.js


    【解决方案1】:

    您应该在发出事件时传递一个对象:

    socket.emit('cameraControls', {controls: controls});
    

    要将控制信息传递到桌面,您的服务器代码应该是:

    io.on('connection', function(socket){
        socket.on('cameraControls', function(data){
            socket.emit('sendControls', {controls: data.controls});
        });
        console.log('a user connected');
    });
    

    然后在桌面的事件监听器中,您可以像这样访问控件:

    socket.on('sendControls', function(data){
        // this.controls = data.controls
        console.log("got EVENT");
    });
    

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 1970-01-01
      • 2016-06-14
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      相关资源
      最近更新 更多