Skip to content

Commit 5322967

Browse files
authored
Added support for Sec-WebSocket-Protocol (#21)
1 parent 3fe0d80 commit 5322967

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

WebSockets/WebSocketServer/WebSocketServer.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ public bool AddWebSocket(HttpListenerContext context)
150150
var headerConnection = context.Request.Headers["Connection"];
151151
var headerUpgrade = context.Request.Headers["Upgrade"];
152152
var headerSwk = context.Request.Headers["Sec-WebSocket-Key"];
153+
var headerSecProtocol = context.Request.Headers["Sec-WebSocket-Protocol"];
153154
WebSocketContext websocketContext = context.GetWebsocketContext();
154155

155156
if (headerConnection == "Upgrade" && headerUpgrade == "websocket" && !string.IsNullOrEmpty(headerSwk))
@@ -166,7 +167,7 @@ public bool AddWebSocket(HttpListenerContext context)
166167
string swka = swk + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; //default signature for websocket
167168
byte[] swkaSha1 = WebSocketHelpers.ComputeHash(swka);
168169
string swkaSha1Base64 = Convert.ToBase64String(swkaSha1);
169-
byte[] response = Encoding.UTF8.GetBytes($"HTTP/1.1 101 Web Socket Protocol Handshake\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: {swkaSha1Base64}\r\nServer: {ServerName}\r\nUpgrade: websocket\r\n\r\n");
170+
byte[] response = Encoding.UTF8.GetBytes($"HTTP/1.1 101 Web Socket Protocol Handshake\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: {swkaSha1Base64}\r\nServer: {ServerName}\r\nUpgrade: websocket{(!string.IsNullOrEmpty(headerSecProtocol)? "\r\nSec-WebSocket-Protocol: " + headerSecProtocol : "")}\r\n\r\n");
170171
websocketContext.NetworkStream.Write(response, 0, response.Length);
171172

172173
var webSocketClient = new WebSocketServerClient(_options);

0 commit comments

Comments
 (0)