首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SignalR HubConnection给出了“协议错误:未知传输”。

SignalR HubConnection给出了“协议错误:未知传输”。
EN

Stack Overflow用户
提问于 2018-01-07 21:46:30
回答 2查看 4.5K关注 0票数 1

我在http://localhost:8090/上运行了一个自己托管的API。我用以下代码创建了一个signalR集线器:

代码语言:javascript
复制
app.UseCors(CorsOptions.AllowAll); //Inside Startup.cs
app.MapSignalR(); //Inside Startup.cs

//Inside own class file
public class SensorHub: Hub
{
    public void Send(string message)
    {
        Console.WriteLine("Send called with message argument: {0}", message);
        Clients.All.addMessage(message);
    }
}

我还做了另一个C#客户机来测试我的signalR集线器,我从集线器那里得到了响应,所以我认为它很好用。见以下代码:

代码语言:javascript
复制
//My working C# client
static void Main(string[] args)
{
    ServicePointManager.DefaultConnectionLimit = 10;
    var url = "http://localhost:8090/signalr";
    var hub = new HubConnection(url);

    var proxy = hub.CreateHubProxy("SensorHub");
    proxy.On("addMessage", message => Console.WriteLine("Data received: " + message));

    // Start hub connection
    Console.WriteLine("Starting hub connection at: {0}", url);
    hub.Start().Wait();
    Console.WriteLine("Hub connected with transport: {0}", hub.Transport.Name);

    // Call hub
    var list = new List<string>
    {
        "value1",
        "value2",
        "value3"
    };

    foreach (var value in list)
    {
        Console.WriteLine("Sending data to hub connection: {0}", value);
        proxy.Invoke("Send", value);
    }

    Console.Read();
}

我想建立一个连接,我的后端-感觉中心和我的角网站。我安装了@aspnet/signalr-client包。在我的角度代码下面:

代码语言:javascript
复制
//My failing angular client
ngOnInit() {
    let connection = new HubConnection('http://localhost:8090/signalr/sensorhub');

    connection.on('addMessage', data => {
      console.log(data);
    });

    connection.start().then(() => console.log('started'));
}

一旦我通过了connection.Start()行,就会收到一个“400个坏请求错误”,它包含以下消息:协议错误:未知传输。

注意:我不使用.NET核心!有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-08 15:51:29

我想问题来自于@aspnet/signalr-client包是为ASP.NET核心构建的事实。

因此,我最终使用了另一个叫做ngx-signalr-hubservice的纱线包。这是相当好的文件和工作(几乎)的盒子。

试一试在:https://github.com/steveadoo32/ngx-signalr-hubservice

票数 0
EN

Stack Overflow用户

发布于 2018-01-07 22:30:49

看起来,这个棱角分明的客户端是在提供者url上找不到集线器。

试着在api上映射signalr集线器,就像.

Startup.cs

代码语言:javascript
复制
 app.UseSignalR(routes =>
 {
      routes.MapHub<SensorHub>("sensorhub");
 });

在客户端上,尝试从url路径中删除“SignalR”。我对此不太了解,但我总是用基uri。

代码语言:javascript
复制
ngOnInit() {
    let connection = new HubConnection('http://localhost:8090/sensorhub'); //without the path signalr

    connection.on('addMessage', data => {
      console.log(data);
    });

    connection.start().then(() => console.log('started'));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48141826

复制
相关文章

相似问题

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