首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebSocket错误:不正确的HTTP响应。状态代码400,不良请求

WebSocket错误:不正确的HTTP响应。状态代码400,不良请求
EN

Stack Overflow用户
提问于 2018-05-28 14:27:13
回答 2查看 3.3K关注 0票数 0

我试图实现SignalR for ASP.NET Core,如本文所述:https://aspnetboilerplate.com/Pages/Documents/SignalR-AspNetCore-Integration

但我总是会犯错误。浏览器控制台输出:

代码语言:javascript
复制
DEBUG: 
Starting connection using WebSockets transport
Information: Normalizing '/signalr-myChatHub' to 'http://localhost:62114/signalr-myChatHub'
SCRIPT12008: WebSocket Error: Incorrect HTTP response. Status code 400, Bad Request

我正在使用最新版本的所有软件包3.6.2和Abp.AspNetCore.SignalR 3.6.2-预览6。

Web.Host/Startup.cs

代码语言:javascript
复制
#elif FEATURE_SIGNALR_ASPNETCORE
    app.UseSignalR(routes =>
    {
        routes.MapHub<AbpCommonHub>("/signalr");
        routes.MapHub<MyChatHub>("/signalr-myChatHub"); // Prefix with '/signalr'
    });
#endif

复制粘贴MyChatHub.cs

代码语言:javascript
复制
public class MyChatHub : Hub, ITransientDependency
{
    public IAbpSession AbpSession { get; set; }

    public ILogger Logger { get; set; }

    public MyChatHub()
    {
        AbpSession = NullAbpSession.Instance;
        Logger = NullLogger.Instance;
    }

    public async Task SendMessage(string message)
    {
        await Clients.All.SendAsync("getMessage", string.Format("User {0}: {1}", AbpSession.UserId, message));
    }

    public override async Task OnConnectedAsync()
    {
        await base.OnConnectedAsync();
        Logger.Debug("A client connected to MyChatHub: " + Context.ConnectionId);
    }

    public override async Task OnDisconnectedAsync(Exception exception)
    {
        await base.OnDisconnectedAsync(exception);
        Logger.Debug("A client disconnected from MyChatHub: " + Context.ConnectionId);
    }
}

多多少少复制粘贴视图:

代码语言:javascript
复制
@using EMetall.Web.Startup

@section scripts
{
    <environment names="Development">
        <script src="~/lib/signalr-client/signalr.min.js"></script>
        <script src="~/lib/abp-web-resources/Abp/Framework/scripts/libs/abp.signalr-client.js"></script>
    </environment>

    <script type="text/javascript">
        $(function () {
            var chatHub = null;

            abp.signalr.startConnection('/signalr-myChatHub', function (connection) {
                chatHub = connection; // Save a reference to the hub

                connection.on('getMessage', function (message) { // Register for incoming messages
                    console.log('received message: ' + message);
                });
            }).then(function (connection) {
                console.log('Connected to myChatHub server!');
                abp.event.trigger('myChatHub.connected');
            });

            abp.event.on('myChatHub.connected', function() { // Register for connect event
                chatHub.invoke('sendMessage', "Hi everybody, I'm connected to the chat!"); // Send a message to the server
            });
        });
    </script>
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-05 15:23:16

从4.2版开始,它就可以开箱即用了。

您只需创建下载,然后创建chathup,注册路由并在视图中调用它,它就能工作了。太棒了。

例如,查看chathup、路由和视图:https://aspnetboilerplate.com/Pages/Documents/SignalR-AspNetCore-Integration

票数 0
EN

Stack Overflow用户

发布于 2018-05-28 15:15:40

您需要使用兼容版本的:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50568550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档