index-local.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //--------------------------------------------------
  2. // Bi-Directional OSC messaging Websocket <-> UDP
  3. //--------------------------------------------------
  4. var osc = require("osc"),
  5. WebSocket = require("ws");
  6. var getIPAddresses = function () {
  7. var os = require("os"),
  8. interfaces = os.networkInterfaces(),
  9. ipAddresses = [];
  10. for (var deviceName in interfaces){
  11. var addresses = interfaces[deviceName];
  12. for (var i = 0; i < addresses.length; i++) {
  13. var addressInfo = addresses[i];
  14. if (addressInfo.family === "IPv4" && !addressInfo.internal) {
  15. ipAddresses.push(addressInfo.address);
  16. }
  17. }
  18. }
  19. return ipAddresses;
  20. };
  21. var udp = new osc.UDPPort({
  22. localAddress: "0.0.0.0",
  23. localPort: 7400,
  24. remoteAddress: "127.0.0.1",
  25. remotePort: 4559//7500 4559 - for Sonic Pi
  26. });
  27. udp.on("ready", function () {
  28. var ipAddresses = getIPAddresses();
  29. console.log("Listening for OSC over UDP.");
  30. ipAddresses.forEach(function (address) {
  31. console.log(" Host:", address + ", Port:", udp.options.localPort);
  32. });
  33. console.log("Broadcasting OSC over UDP to", udp.options.remoteAddress + ", Port:", udp.options.remotePort);
  34. });
  35. udp.open();
  36. var wss = new WebSocket.Server({
  37. port: 8081
  38. });
  39. wss.on("connection", function (socket) {
  40. console.log("A Web Socket connection has been established!");
  41. var socketPort = new osc.WebSocketPort({
  42. socket: socket
  43. });
  44. var relay = new osc.Relay(udp, socketPort, {
  45. raw: true
  46. });
  47. });