Problem in Websocket JS

Just starting out? Need help? Post your questions and find answers here.
skinkairewalker
Posts: 120
Joined: Tue Jun 14, 2016 7:17 pm

Problem in Websocket JS

Post by skinkairewalker »

hi everyone !

i am trying use [u]Peter[/u] Websocket Code

Code: Select all

Procedure doSend(message.s)
  Debug "Sending: " + message
  ! websocket.send(v_message);
  Debug "-------"
EndProcedure

Procedure onOpen(evt) 
  Debug "onOpen()"
  ; Debug evt
  Debug "-------"
  doSend("WebSocket rocks")
EndProcedure

Procedure onClose(evt)
  Debug "onClose"
  ; Debug evt
  Debug "-------"
EndProcedure

Procedure onMessage(evt)
  Debug "onMessage()"
  Protected MessageFromWs.s
  ! v_messagefromws = v_evt.data;
  Debug "MessageFromWs: " + MessageFromWs
  Debug "-------"
  ! websocket.close();
EndProcedure

Procedure onError(evt)
  Debug "onError()"
  ; Debug evt
  Debug "-------"
EndProcedure

;; what this function do ? and where it is called ?
Procedure Dummy()
  onOpen(0)
  onClose(0)
  onMessage(0)
  onError(0)
EndProcedure

Procedure initWebSocket(wsUri.s)
  ! websocket = new WebSocket(v_wsuri);
  ! websocket.onopen = function(evt) { f_onopen(evt) };
  ! websocket.onclose = function(evt) { f_onclose(evt) };
  ! websocket.onmessage = function(evt) { f_onmessage(evt) };
  ! websocket.onerror = function(evt) { f_onerror(evt) };
EndProcedure


initWebSocket("ws://echo.websocket.org/")


when i delete Procedure : Dummy() code dont works ... why ?
User avatar
Peter
Posts: 1086
Joined: Mon Feb 24, 2014 10:17 pm
Location: 127.0.0.1:9080
Contact:

Re: Problem in Websocket JS

Post by Peter »

onOpen(), onClose(), onMessage() and onError() are only called in initWebSocket() in Inline-JavaScript (f_onopen(), f_onclose(), f_onmessage(), f_onerror()), so SpiderBasic doesn't know, that they are needed and removes them.

To avoid this behaviour, i create the Dummy-Procedure.

See also: http://forums.spiderbasic.com/viewtopic.php?f=13&t=864

Greetings ... Peter
falsam
Posts: 280
Joined: Mon May 05, 2014 9:49 pm
Location: France
Contact:

Re: Problem in Websocket JS

Post by falsam »


➽ Windows 11 - JDK 1.8 - SB 2.40 - Android 13
http://falsam.com

Sorry for my poor english
falsam
Posts: 280
Joined: Mon May 05, 2014 9:49 pm
Location: France
Contact:

Re: Problem in Websocket JS

Post by falsam »

I do not know why this workaround to call procedures from raw javascript. I agree with skinkairewalker: It's strange to do like that.

@SpiderBasic Team: Why not consider that !f_myprocedure calls the procedure myprocedure ?

■ May be this solution with callback ?

Code: Select all

Procedure doSend(message.s)
  Debug "Sending: " + message
  ! websocket.send(v_message);
  Debug "-------"
EndProcedure

Procedure onOpen(evt) 
  Debug "onOpen()"
  ; Debug evt
  Debug "-------"
  doSend("WebSocket rocks")
EndProcedure

Procedure onClose(evt)
  Debug "onClose"
  ; Debug evt
  Debug "-------"
EndProcedure

Procedure onMessage(evt)
  Debug "onMessage()"
  Protected MessageFromWs.s
  ! v_messagefromws = v_evt.data;
  Debug "MessageFromWs: " + MessageFromWs
  Debug "-------"
  ! websocket.close();
EndProcedure

Procedure onError(evt)
  Debug "onError()"
  ; Debug evt
  Debug "-------"
EndProcedure

Procedure initWebSocket(wsUri.s, OnOpen_CallBack, OnClose_CallBack, OnMessage_CallBack, OnError_CallBack)
  ! websocket = new WebSocket(v_wsuri);
  ! websocket.onopen = function(evt) { v_onopen_callback(evt) };
  ! websocket.onclose = function(evt) { v_onclose_callback(evt) };
  ! websocket.onmessage = function(evt) { v_onmessage_callback(evt) };
  ! websocket.onerror = function(evt) { v_onerror_callback(evt) };
EndProcedure

initWebSocket("ws://echo.websocket.org/", @onOpen(), @onClose(), @onMessage(), @onError())

➽ Windows 11 - JDK 1.8 - SB 2.40 - Android 13
http://falsam.com

Sorry for my poor english
Post Reply