我现在正在做一些事情而且我不能让它发挥作用。我有一个带控件的three.js球体(桌面上的“HTML1”)。 (THREE.OrbitControls)这在计算机和平板电脑上都很好用。我想要做的是通过我的ipad控制该球体,所以我在我的ipad上运行的html文件(“HTML2”)上加载了一个空白场景。那个空白的三个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){});
桌面球体接收的内容(也在函数渲染中加载):
socket.on('sendControls', function(controls){
//this.controls = controls;
console.log("got EVENT");
});
有什么想法吗?这是我第一次使用socket.io。终端或控制台日志中没有错误,所以我不确定我做错了什么。
答案 0 :(得分: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");
});