我在http://localhost:8090/上运行了一个Owin-selfhosted API。 我使用以下代码创建了一个signalR hub:
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集线器,我从集线器获得响应,所以我认为它的功能和运行良好。请参阅以下代码:
//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
包。在我的角度代码下面:
//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()
行,我就会收到错误请求错误&#39;包含以下消息:协议错误:未知传输。
注意:我不使用.NET Core! 有任何想法吗?
答案 0 :(得分:0)
似乎有角客户端说他没有在提供商网址上找到集线器。
尝试在api上映射信号器中心,就像那样......
Startup.cs
app.UseSignalR(routes =>
{
routes.MapHub<SensorHub>("sensorhub");
});
在客户端上,尝试从url路径中删除“SignalR”。我没有太多支持,但我总是使用基础uri。
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'));
}
答案 1 :(得分:0)
我想问题来自@aspnet/signalr-client
包是为ASP.NET Core构建的事实。
因此我最终使用另一个名为ngx-signalr-hubservice
的纱线包。
它有很好的文档记录,并且(几乎)开箱即用。