为什么在设备中找不到socket.io.js?

时间:2018-10-14 11:24:09

标签: javascript node.js processing p5.js reaper

我正在研究一个将p5.js连接到Reaper的项目,以便向其他设备(iPad或其他PC)发送一个乐谱,该乐谱会随着Reaper读取的音乐自动更改页面。

我在Reaper中激活了OSC,我可以在p5.js项目中收到时间轴,因此可以使用它来显示分数和更改,但是当我尝试连接到另一台设备时,我什么都看不到。错误是无法加载资源,尤其是找不到http://localhost:8081/socket.io/socket.io.js

我首先使用node.js打开一个名为bridge.js的文件,以打开与OSC Reaper的连接并将服务器托管在:3000。

var osc = require('node-osc');
var io = require('socket.io')(8081);

var oscServer, oscClient;

var isConnected = false;

io.sockets.on('connection', function(socket) {
  console.log('connection');
  socket.on("config", function(obj) {
    isConnected = true;
    oscServer = new osc.Server(obj.server.port, obj.server.host);
    oscClient = new osc.Client(obj.client.host, obj.client.port);
    oscClient.send('/status', socket.sessionId + ' connected');
    oscServer.on('message', function(msg, rinfo) {
      socket.emit("message", msg);
    });
    socket.emit("connected", 1);
  });
  socket.on("message", function(obj) {
    oscClient.send.apply(oscClient, obj);
  });
  socket.on('disconnect', function() {
    if (isConnected) {
      oscServer.kill();
      oscClient.kill();
    }
  });
});



var path = require('path');
var express = require('express');
var app = express();

var jsPath = path.join(__dirname, '/public');

app.use(express.static(jsPath));

var server = app.listen(3000, function() {
  var host = 'localhost';
  var port = server.address().port;
  console.log('listening on http://' + host + ':' + port + '/');
});

在公用文件夹中,我有.js文件和index.html,我在这里放入了index.html:

<html>

<head>

  <meta charset="UTF-8">

  <script src="http://localhost:8081/socket.io/socket.io.js"></script>
  <script language="javascript" src="libraries/p5.js"></script>
  <script language="javascript" src="sketch.js"></script>
  <script language="javascript" src="functions.js"></script>

  <style>
    body {
      padding: 0;
      margin: 0;
      display: flex;

      /* This centers our sketch horizontally. */
      justify-content: center;

      /* This centers our sketch vertically. */
      align-items: center;

      background-color: black;
    }
  </style>

</head>

<body>

</body>

</html>

就是这样!有人可以弄清楚我该如何解决我的情况吗? 我是一个音乐家,所以不是真正的程序员。 预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我相信您的错误可能是因为您告诉浏览器在localhost上查找socket.io.js文件。您会看到“ localhost:8081/file.js”告诉浏览器在本地计算机上查找在端口8081上运行的服务器,并获取名为file.js的文件。但是,当您在iPad上打开网页时,该iPad上没有服务器在运行,因此浏览器不知道如何处理您提供的文件路径。

考虑将您的代码更改为此:

  <script src="socket.io/socket.io.js"></script>
  <script language="javascript" src="libraries/p5.js"></script>
  <script language="javascript" src="sketch.js"></script>
  <script language="javascript" src="functions.js"></script>