WebSocket.qml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import QtWebSockets 1.0
  2. import QtQuick 2.5
  3. Item {
  4. property alias tot_slides : socket.total_slides
  5. property alias isOpen : socket.isOpen
  6. function send_obj(obj) {
  7. socket.sendTextMessage(JSON.stringify(obj))
  8. }
  9. function set_preg() {
  10. send_obj({ type: "initpreg" })
  11. }
  12. function unset_preg() {
  13. send_obj({ type: "stoppreg" })
  14. }
  15. function prev_diapo() {
  16. var curImage = Math.max(item1.curImage - 1, 1)
  17. send_obj({
  18. type: "command",
  19. commandtype: "diapo",
  20. PDF: item1.curPDF,
  21. slide: curImage
  22. })
  23. }
  24. function next_diapo() {
  25. var curImage = Math.min(item1.curImage + 1, tot_slides)
  26. send_obj({
  27. type: "command",
  28. commandtype: "diapo",
  29. PDF: item1.curPDF,
  30. slide: curImage
  31. })
  32. }
  33. function clear_path() {
  34. send_obj({
  35. type: "command",
  36. commandtype: "clean"
  37. })
  38. }
  39. function send_point(p) {
  40. send_obj({
  41. type: "command",
  42. commandtype: "draw",
  43. points: [p],
  44. color: canvas.curColor
  45. })
  46. }
  47. function finish_path() {
  48. send_obj({ type: "endPath" })
  49. }
  50. WebSocket {
  51. property int total_slides: 150
  52. id: socket
  53. url: "wss://wscasa.especificosba.com.ar"
  54. //url: "ws://192.168.1.7:9001"
  55. active: true
  56. property bool isOpen: false
  57. onTextMessageReceived: {
  58. if (message.indexOf("snowmix") > -1)
  59. return
  60. var obj = JSON.parse(message)
  61. switch (obj.type) {
  62. case "diapo":
  63. canvas.clean_path()
  64. item1.curPDF = obj.PDF
  65. item1.curImage = obj.slide //automagically change_image
  66. if (obj.total_slides === undefined){
  67. console.log(message);
  68. total_slides = 300
  69. } else {
  70. total_slides = obj.total_slides
  71. }
  72. break
  73. case "preg":
  74. item1.addPreg(obj.text)
  75. break
  76. case "deletepreg":
  77. item1.pregs = []
  78. break
  79. case "endPath":
  80. case "draw":
  81. case "clean":
  82. case "snowmix":
  83. break
  84. default:
  85. console.log(JSON.stringify(obj))
  86. }
  87. }
  88. onStatusChanged: {
  89. isOpen = (socket.status == WebSocket.Open);
  90. if (socket.status == WebSocket.Open) {
  91. wsStatus.text = qsTr("Conectado")
  92. } else {
  93. wsStatus.text = qsTr("Desconectado\nReconectando..")
  94. }
  95. }
  96. }
  97. Timer {
  98. interval: 1000;
  99. running: true;
  100. repeat: true;
  101. onTriggered: {
  102. if (!socket.isOpen){//Reconnect
  103. socket.active = false
  104. socket.active = true
  105. console.log("Connecting... " +Date().toString())
  106. }
  107. }
  108. }
  109. }