Я столкнулся с неприятной проблемой с безопасными WebSockets в моем проекте. У меня есть серверная часть .NET 8.0, на которой размещено веб-приложение Vue 3 на локальном хосте: 443 с использованием самозаверяющего сертификата разработки. Веб-приложение пытается подключиться к конечной точке WebSocket (
Проверил, что серверная часть работает с использованием расширений Postman и Chrome.
Пыталась также добавить localhost в webSocketOptions.AllowedOrigins, но безуспешно.
Использовался действительный URL-адрес WebSocket (ws:// или wss:// в зависимости от происхождение).
Проверены журналы браузера; единственная подсказка — это CloseEvent с кодом 1006.
Использование сертификата, подписанного внутренним центром сертификации (корневой сертификат которого добавлен в доверенные корневые центры сертификации), безуспешно.
Вопрос:
Почему не удается подключиться к WebSocket из приложения Vue при работе с внешними клиентами, такими как Postman? Какие дополнительные действия мне следует предпринять, чтобы отладить или исправить эту проблему?
Я столкнулся с неприятной проблемой с безопасными WebSockets в моем проекте. У меня есть серверная часть .NET 8.0, на которой размещено веб-приложение Vue 3 на локальном хосте: 443 с использованием самозаверяющего сертификата разработки. Веб-приложение пытается подключиться к конечной точке WebSocket ([code]/ws[/code]), предоставляемый той же серверной частью, но соединение завершается с ошибкой CloseEvent с кодом 1006.
[h4]Наблюдения :[/h4] [list] [*]При использовании клиентов WebSocket, таких как расширения Postman или Chrome (например, «Тестовый клиент WebSocket»), соединение работает отлично. [*]При подключении через В приложении Vue 3, работающем на том же хосте, WebSocket не работает без особых объяснений. [*]Если я использую http, все работает нормально. [/list] [h4]Настройка серверной части:[/h4] [list] [*][b]Контроллер WebSocket[/b]:[/list] [code][Route("/[controller]")] public class WsController : ControllerBase { [HttpGet] public async Task Echo() { if (HttpContext.WebSockets.IsWebSocketRequest) { using (var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync()) { var buffer = new byte[1024 * 4]; var receiveResult = await webSocket.ReceiveAsync( new ArraySegment(buffer), CancellationToken.None);
while (!receiveResult.CloseStatus.HasValue) { await webSocket.SendAsync( new ArraySegment(buffer, 0, receiveResult.Count), receiveResult.MessageType, receiveResult.EndOfMessage, CancellationToken.None);
receiveResult = await webSocket.ReceiveAsync( new ArraySegment(buffer), CancellationToken.None); }
await webSocket.CloseAsync( receiveResult.CloseStatus.Value, receiveResult.CloseStatusDescription, CancellationToken.None); } } } } [/code] [list] [*][b]Хостинг веб-приложений Vue[/b]: [/list] Приложение Vue компилируется в папку /dist и обслуживается в /webapp: [code]app.Map("/webapp", false, builder => { builder.UseSpa(spa => { var path = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "dist");
StaticFileOptions clientAppDist = new StaticFileOptions() { FileProvider = new PhysicalFileProvider(path) };
[/code] [h4]Что я пробовал:[/h4] [list] [*]Проверил, что серверная часть работает с использованием расширений Postman и Chrome. [*]Пыталась также добавить localhost в webSocketOptions.AllowedOrigins, но безуспешно. [*]Использовался действительный URL-адрес WebSocket (ws:// или wss:// в зависимости от происхождение). [*]Проверены журналы браузера; единственная подсказка — это CloseEvent с кодом 1006. Использование сертификата, подписанного внутренним центром сертификации (корневой сертификат которого добавлен в доверенные корневые центры сертификации), безуспешно. [/list] [h4]Вопрос:[/h4] Почему не удается подключиться к WebSocket из приложения Vue при работе с внешними клиентами, такими как Postman? Какие дополнительные действия мне следует предпринять, чтобы отладить или исправить эту проблему?
Извините, если мой вопрос глупый, так как я новичок в платформе aosp.
Я вижу два бэкэнда для разработки службы Binder на стороне платформы aosp на C++. (Пока игнорируйте Java)
Пример:
aidl_interface {
name: example.service ,
vendor_available:...
Извините, если мой вопрос глупый, так как я новичок в платформе aosp.
Я вижу два бэкэнда для разработки службы Binder на стороне платформы aosp на C++. (Пока игнорируйте Java)
Пример:
aidl_interface {
name: example.service ,
vendor_available:...
Добрый день!
Я разработчик-самоучка, стремящийся расширить свои знания и улучшить свои навыки. В настоящее время я работаю над созданием безопасного соединения WebSocket (WSS) в консольном приложении C# с использованием библиотеки WebSocketSharp....