You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ipc.js 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. (function() {
  2. window.ipc = {};
  3. ipc.ongamestopped = null;
  4. ipc.ongamelist = null;
  5. ipc.onerror = null;
  6. var ws;
  7. var connected = false;
  8. function send(obj) {
  9. var msg = JSON.stringify(obj);
  10. if (!connected)
  11. return console.error(
  12. "Attempt to send message, but socket is closed.");
  13. console.log("Sending", msg);
  14. ws.send(msg);
  15. }
  16. ipc.init = (port, cb) => {
  17. console.log("Connecting...");
  18. ws = new WebSocket("ws://127.0.0.1:"+port);
  19. ws.onopen = () => {
  20. connected = true;
  21. console.log("Connected.");
  22. cb && cb();
  23. }
  24. ws.onmessage = msg => {
  25. console.log("Received", msg.data);
  26. var obj = JSON.parse(msg.data);
  27. switch (obj.cmd) {
  28. case "ongamestopped":
  29. return ipc.ongamestopped();
  30. case "ongamestart":
  31. return ipc.ongamestart();
  32. case "ongamelist":
  33. return ipc.ongamelist(obj.games);
  34. case "onerror":
  35. return ipc.onerror(obj.msg);
  36. default:
  37. console.error("Received unknown command:", obj.cmd);
  38. }
  39. }
  40. ws.onclose = () => {
  41. connected = false;
  42. console.log("Disconnected, retrying in 1 second...");
  43. setTimeout(ipc.init.bind(null, port, cb), 1000);
  44. }
  45. }
  46. ipc.run = name => {
  47. send({ cmd: "run", name: name });
  48. }
  49. })();