'WebSocket class
Sub Class_Globals
Private ws As WebSocket
Private trg, Timer1 As Timer
Private GameID As String
End Sub
Public Sub Initialize
End Sub
Private Sub WebSocket_Connected (WebSocket1 As WebSocket)
Log("Connected")
ws = WebSocket1
Timer1.Initialize("timer1", 1000)
Timer1.Enabled = True
End Sub
Sub RequestForGameID_Data(Params As Map)
GameID = Params.Get("gameid")
Log("Request received for data from game with GameID: " & GameID)
If Main.updateStatus.Get(GameID) = Null Then 'Game data has yet to commence being sent & so create map entry for game with status as "False"
Main.updateStatus.Put(GameID, "False")
End If
trg.Initialize("trg", 50)
trg.Enabled = True
WriteOutput
End Sub
Sub WriteOutput
Dim Counter As Int = 0
Do While True
If Main.updateStatus.Get(GameID) = "True" Then
Dim jg As JSONGenerator
jg.Initialize(DBUtils.GameIDValues(Main.SQL1, GameID))
Log(jg.ToString & Chr(10))
ws.RunFunction("Text", Array As Object(jg.ToString & Chr(10)))
ws.Flush
Main.updateStatus.Put(GameID, "False")
Counter = -1
End If
wait for trg_Tick
If Counter = 100 Then
ws.RunFunction("Text", Array As Object($"{"type":"connection","status":"CONNECTED"}"$ & Chr(10)))
ws.Flush
Log($"{"type":"connection","status":"CONNECTED"}"$ & Chr(10)) 'Send heart beat at least every 5s
Counter = -1
End If
Counter = Counter + 1
Loop
End Sub
Sub WebSocket_Disconnected
Log("Disconnected")
End Sub
Sub Device_Message(Params As Map)
Log("Device message: " & Params.Get("message"))
End Sub
Sub Timer1_Tick
Log(DateTime.Time(DateTime.Now))
ws.RunFunction("ServerTime", Array As Object(DateTime.Time(DateTime.Now)))
ws.Flush
End Sub