Just starting out? Need help? Post your questions and find answers here.
skinkairewalker
Posts: 120 Joined: Tue Jun 14, 2016 7:17 pm
Post
by skinkairewalker » Sun Jun 04, 2017 7:41 pm
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 ?
Peter
Posts: 1086 Joined: Mon Feb 24, 2014 10:17 pm
Location: 127.0.0.1:9080
Contact:
Post
by Peter » Sun Jun 04, 2017 8:30 pm
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:
Post
by falsam » Sun Jun 04, 2017 8:52 pm
➽ 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:
Post
by falsam » Sun Jun 04, 2017 9:11 pm
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