c# - SignalR 示例应用程序失败
问题描述
我正在尝试按照此处的步骤进行操作。当我尝试跑步时
let webSocket = new WebSocket('wss://localhost:5001/ws');
我在控制台中运行,我得到了错误。
WebSocket connection to 'wss://localhost:5001/ws' failed:
(anonymous) @ VM62:1
我只是创建了 .Net 5 Web API 并安装了Microsoft.AspNetCore.SignalR.Core
nuget 包。我想念什么?你可以帮帮我吗?这是我的第一个 WebSocket 方法。
这是 WebSocketsContoller.cs
using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
namespace LearningWebSocket.Controllers
{
[ApiController]
[Route("[controller]")]
public class WebSocketsController : ControllerBase
{
private readonly ILogger<WebSocketsController> _logger;
public WebSocketsController(ILogger<WebSocketsController> logger)
{
_logger = logger;
}
[HttpGet("/ws")]
public async Task Get()
{
if (HttpContext.WebSockets.IsWebSocketRequest)
{
using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync();
_logger.Log(LogLevel.Information, "WebSocket connection established");
await Echo(webSocket);
}
else
{
HttpContext.Response.StatusCode = 400;
}
}
private async Task Echo(WebSocket webSocket)
{
var buffer = new byte[1024 * 4];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
_logger.Log(LogLevel.Information, "Message received from Client");
while (!result.CloseStatus.HasValue)
{
var serverMsg = Encoding.UTF8.GetBytes($"Server: Hello. You said: {Encoding.UTF8.GetString(buffer)}");
await webSocket.SendAsync(new ArraySegment<byte>(serverMsg, 0, serverMsg.Length), result.MessageType, result.EndOfMessage, CancellationToken.None);
_logger.Log(LogLevel.Information, "Message sent to Client");
result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
_logger.Log(LogLevel.Information, "Message received from Client");
}
await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
_logger.Log(LogLevel.Information, "WebSocket connection closed");
}
}
}
解决方案
推荐阅读
- javascript - 如何更改应用于多个元素中的跨度的类?
- r - opencpu 云的安全配置文件是什么?
- javascript - ESLint 在括号中显示错误
- git - 使用 Github 上具有多个分支的现有 git 存储库
- mysql - 如何通过mysql创建这样的表
- php - 联系表单上下拉菜单的 PHP 代码,基于选择的特定电子邮件
- python - pysqlite 从 csv 文件中获取列名
- scala - 在Scala中反转地图
- sharepoint - 无法再以编程方式访问 SharePoint Online
- kubernetes - 在 Kubernetes 中动态分配端口号?