Отправить параметр Websocket при подключении, но не в строке запроса - PullRequest
0 голосов
/ 06 июня 2018

Я использую Microsoft.Web.WebSockets, как показано ниже, как я могу назначить при подключении, какой пользователь подключается, не устанавливая свой идентификатор в строке запроса, у меня есть на сервере элементы свойств, но на клиенте я ничего не могу найтивот так.

это мой сервер:

using System.Linq;
using Microsoft.Web.WebSockets;

namespace TestSocket
{
    public class TestWebSocketHandler : WebSocketHandler
    {
        private static WebSocketCollection clients = new WebSocketCollection();
        private string name;
        public override void OnOpen()
        {
            this.name = this.WebSocketContext.QueryString["name"];
            var a = this.WebSocketContext.Items["test"];
            var all = clients.Where(n => ((TestWebSocketHandler)n).name == this.name);
            if (all.Count() > 0)
            {
                clients.Remove((TestWebSocketHandler)all.ToList()[0]);
            }
            clients.Add(this);
        }

        public override void OnMessage(string message)
        {
            // WebSocketPacket webso = JsonConvert.DeserializeObject<WebSocketPacket>(message);
            //  WebSocketPacket response = new WebSocketPacket();
            var channel = clients.FirstOrDefault(n => ((TestWebSocketHandler)n).name == message);
            if (channel != null)
                channel.Send("test 123");
        }

        public override void OnClose()
        {
            clients.Remove(this);

        }
    }
}

это мой клиент:

var ws = new WebSocket("ws://localhost:30455//ws.ashx");
ws.Connect();
ws.Send("BALUS");

и как я могу зашифровать данные, передаваемые между сервером и клиентом?

1 Ответ

0 голосов
/ 06 июня 2018

как я могу назначить при подключении, какой пользователь подключается, не устанавливая его идентификатор в строке запроса

Подтверждение соединения WebSocket выполняется с использованием HTTP GET запроса.В запросе GET есть только два способа передачи пользовательских данных на HTTP-сервер - через строку запроса URL-адреса и через пользовательский заголовок HTTP.Большинство клиентских библиотек WebSocket не позволяют вам указывать пользовательские заголовки HTTP во время рукопожатия WebSocket, так что остается только строка запроса URL (если вы писали свой собственный клиент HTTP, то вы могли бы отправлять любые заголовки HTTP, которые вы хотели).

как зашифровать данные, передаваемые между сервером и клиентом?

Использовать wss:// вместо ws://

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...