javascript - Socket.io 与 Three.js Sphere (OrbitControls)

标签 javascript ipad socket.io three.js

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

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

我的服务器:服务器正在从平板电脑获取数据,但未发送(或台式机未接收)

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。终端或控制台日志中没有错误,所以我不确定我做错了什么。

最佳答案

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

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");
});

关于javascript - Socket.io 与 Three.js Sphere (OrbitControls),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37844612/

相关文章:

JavaScript 返回未按预期工作

javascript - 如何在标题中使用 Kaminari 分页

cocoa-touch - 关闭 UIKeyboard 后在 UIPopoverController 中显示 UIDatePicker

node.js 应用程序突然以 100% 加载 CPU 并挂起

javascript - 如何使用JS检测网络中的服务器?

Javascript:根据两个标准拆分字符串?

javascript - 我怎样才能找到两个或多个整数的GCD,javascript?没有方法

iphone - 以编程方式删除 UIWebView 中的选择

objective-c - 使用完全不同的架构更新iPad应用程序

javascript 从缓冲区将图像绘制到 html (nodejs/socket.io)