基于VB.NET的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

我在VB.NET中实现了一个小型套接字服务器,它只接受长达125个字符的消息,现在我需要修改以接受更长的消息。然而,我想知道在.net中是否有一个库可以接收和发送websocket消息,而无需手工操作

我已经看到了一些关于如何创建基本websocket客户端而不是服务器的示例

以下是我的接收消息功能:

        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
谢谢大家!