'WebSocket class
Sub Class_Globals
Private sql As SQL
Private ws As WebSocket
Private session_id As String
Private mCode As String
End Sub
Public Sub Initialize
DateTime.DateFormat = "yyyy-MM-dd"
DateTime.TimeFormat = "HH:mm:ss.SSS"
writelog("Initialize")
End Sub
Private Sub WebSocket_Connected (WebSocket1 As WebSocket)
ws = WebSocket1
Dim session As HttpSession = ws.UpgradeRequest.GetSession
session_id = session.Id
writelog("WebSocket_Connected, is secure " & ws.Secure & ", session id = " & session_id)
End Sub
Sub getSqlConnection
Try
' // get a connection to the system db
sql = Main.DB_SQL.GetConnection
writelog("getSqlConnection, IsInitialized = " & sql.IsInitialized)
Catch
writelog("getSqlConnection, error - " & LastException)
close_socket
End Try
End Sub
Sub closeSqlConnection
Try
' // get a connection to the system db
sql.Close
writelog("closeSqlConnection, IsInitialized = " & sql.IsInitialized)
Catch
writelog("closeSqlConnection, error - " & LastException)
close_socket
End Try
End Sub
Sub close_socket
closeSqlConnection
ws.Close
End Sub
Sub send_some_data
Dim s As String
Dim rs As ResultSet
' // get a SQL connection
getSqlConnection
' // do we have a connection
If sql.IsInitialized Then
' // do a query
rs = sql.ExecQuery("SELECT public_id, account_name from [IS_SYSTEM].dbo.c_users " & _
"WHERE public_id = '" & mCode & "' OR (" & _
"phone_1 = '" & mCode & "' OR " & _
"phone_2 = '" & mCode & "' OR " & _
"phone_3 = '" & mCode & "' OR " & _
"phone_4 = '" & mCode & "')")
' // go data
If rs.nextrow Then
' // send
ws.RunFunction("ServerTime", Array As Object(rs.GetString("account_name"),generate_session_id))
ws.Flush
writelog("send_some_data() Sending Data," & rs.GetString("account_name") & ", " & generate_session_id)
Else
s = "Invalid code " & mCode
ws.RunFunction("ServerTime", Array As Object(s))
ws.Flush
writelog("send_some_data() Invalid Code " & mCode)
mCode = ""
End If
rs.Close
Else
writelog("send_some_data() sql.IsInitialized = " & sql.IsInitialized)
End If
' // close connectio to sql
closeSqlConnection
End Sub
Sub generate_session_id As String
Dim res As String
Dim x As Int
Dim bc As ByteConverter
Dim b As Byte
For x = 1 To 16
b = Rnd(33,255)
res = res & bc.HexFromBytes(Array As Byte(b))
Next
Return res
End Sub
Sub Device_Message(Params As Map)
mCode = Params.Get("message")
send_some_data
End Sub
Private Sub WebSocket_Disconnected
writelog("websocket.Disconnected")
End Sub
Sub writelog(pData As String)
DateTime.DateFormat = "yyyy-MM-dd"
DateTime.TimeFormat = "HH:mm:ss.SSS"
Log(DateTime.date(DateTime.Now) & " " & DateTime.Time(DateTime.Now) & ":" &session_id & ":INFO:WebSock:" & pData)
End Sub