Я установил пакет nuget websocket-sharp-customheaders для моего приложения WebSocket и хочу отправить sessionId внутри http-header-information. Код клиента:
public class SocketController
{
public static readonly string ConnectionString = "ws://localhost:{0}/{1}";
private string sessionId;
public WebSocket NotificationSocket { get; private set; }
public SocketController(ServiceConfiguration config)
{
NotificationSocket = new WebSocket(string.Format(ConnectionString, config.Port, "Notify"));
}
public void Connect()
{
NotificationSocket.Connect();
}
public void SendNotification(string sessionId, Notification data)
{
if (NotificationSocket.ReadyState == WebSocketState.Open)
{
NotificationSocket.CustomHeaders = new Dictionary<string, string> { { "SessionId", sessionId } };
NotificationSocket.Send(data.SerializeJson());
}
}
public void SetNotificationSocketOnMessage(Action<NotifyMessage> onMessage)
{
NotificationSocket.OnMessage += (sender, e) => onMessage(e.Data.DeserializeJson<NotifyMessage>());
}
public void Stop()
{
NotificationSocket.Close();
}
}
В SendNotification установлен заголовок. Но сервер не получает информацию заголовка.
Поведение сокета сервера:
public class NotifyService : WebSocketBehavior
{
protected override void OnMessage(MessageEventArgs e)
{
var command = e.Data;
if (!Context.Headers.Contains("SessionId"))
return;
// Stuff todo with SessionId and Data
}
}
Может кто-нибудь сказать мне, как правильно отправлять информацию заголовка?