基于VB.NET的websocket服务器
我在VB.NET中实现了一个小型套接字服务器,它只接受长达125个字符的消息,现在我需要修改以接受更长的消息。然而,我想知道在.net中是否有一个库可以接收和发送websocket消息,而无需手工操作 我已经看到了一些关于如何创建基本websocket客户端而不是服务器的示例 以下是我的接收消息功能:基于VB.NET的websocket服务器,vb.net,websocket,server,Vb.net,Websocket,Server,我在VB.NET中实现了一个小型套接字服务器,它只接受长达125个字符的消息,现在我需要修改以接受更长的消息。然而,我想知道在.net中是否有一个库可以接收和发送websocket消息,而无需手工操作 我已经看到了一些关于如何创建基本websocket客户端而不是服务器的示例 以下是我的接收消息功能: Public Function CheckMessage() As String Dim stream As NetworkStream = m_tcpCl
Public Function CheckMessage() As String
Dim stream As NetworkStream = m_tcpClient.GetStream()
Dim bytes As [Byte]() = New [Byte](65536) {}
If (Not stream.DataAvailable) Then
Return ""
End If
Try
' https://github.com/pusher/websockets-from-scratch-tutorial/blob/master/README.md
Dim fin_and_opcode(1) As Byte
Dim received = stream.Read(fin_and_opcode, 0, 1)
If (received = 0) Then
m_logFn("client down")
Return ""
End If
If Not (fin_and_opcode(0) = 129) Then
m_logFn("Got a " & fin_and_opcode(0) & " close client")
Return ""
End If
Dim mask_and_length_indicator(1) As Byte
stream.Read(mask_and_length_indicator, 0, 1)
Dim msgLength As Integer = mask_and_length_indicator(0) - 128
If (msgLength > 125) Then
m_logFn("message too long, bye \n")
Return ""
End If
Dim msgKeys(4) As Byte
stream.Read(msgKeys, 0, 4)
Dim encoded(130) As Byte
stream.Read(encoded, 0, msgLength)
For i As Integer = 0 To msgLength - 1
encoded(i) = encoded(i) Xor msgKeys(i Mod 4)
Next
Dim Msg As [String] = Encoding.UTF8.GetString(encoded, 0, msgLength)
If (stream.DataAvailable) Then
Dim r = stream.Read(bytes, 0, 1)
End If
Console.WriteLine(Msg)
Return Msg
Catch ex As Exception
m_logFn("client timed out or disconnected" & vbCrLf & ex.Message & ex.StackTrace)
Return ""
End Try
End Function
谢谢大家!