For reasons that I´ll skip explaining here (look here https://www.b4x.com/android/forum/threads/webview-continuously-receiving-data.95551/#post-603680 if you want the background) I need to set up a websocket server that I can communicate with on my intranet, simply sending frames to it that will processed.
So I´m trying to create a simple setup where I send a message every 3 seconds, and then I was hoping to find out how to manipulate it further.
But I get an error from the server side:
B4X:
java.lang.NullPointerException
at anywheresoftware.b4j.object.WebSocketModule$Adapter.onWebSocketText(WebSocketModule.java:112)
Is anybody able to see what I´m doing wrong?
Thanks in advance, project attached.
PS: No, it won´t work to send this via UDP instead; they´re being sent from within a javascript.
On the client side, you will be better off using the WebSocketHandler class instead of the raw WebSocketClient. Instead of sending text messages back and forth, you will be raising events with parameters.
On the client side, you will be better off using the WebSocketHandler class instead of the raw WebSocketClient. Instead of sending text messages back and forth, you will be raising events with parameters.
Thanks, but I found a solution now.
I wasn´t aware of the syntax for messages that needs to be followed. So I have this now:
B4X:
Sub timer_tick
'Dim m As Map
'm.Initialize
'm.Put ("time", DateTime.Now)
Dim json As JSONGenerator
' json.Initialize(m)
' Dim jsonstring As String = json.ToString
' Log (jsonstring)
'ws.SendText(jsonstring)
Dim timestring As String = DateTime.now
Dim m As Map
m.Initialize
m.Put("type", "event")
m.Put("event","Device_Message")
m.Put("params", timestring)
Dim jg As JSONGenerator
jg.Initialize(m)
ws.SendText(jg.ToString)
End Sub
And in the Websock Class I have:
B4X:
Sub Device_Message(Params As Map)
Dim indstring As String = Params
indstring = indstring.replace("(String) ","")
Log (indstring)
End Sub
I guess it can be done more elegantly than this, but I´m pretty ok with it!