我在http://localhost:8090/上运行了一个自己托管的API。我用以下代码创建了一个signalR集线器:
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()行,就会收到一个“400个坏请求错误”,它包含以下消息:协议错误:未知传输。
注意:我不使用.NET核心!有什么想法吗?
发布于 2018-01-08 15:51:29
我想问题来自于@aspnet/signalr-client包是为ASP.NET核心构建的事实。
因此,我最终使用了另一个叫做ngx-signalr-hubservice的纱线包。这是相当好的文件和工作(几乎)的盒子。
发布于 2018-01-07 22:30:49
看起来,这个棱角分明的客户端是在提供者url上找不到集线器。
试着在api上映射signalr集线器,就像.
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'));
}https://stackoverflow.com/questions/48141826
复制相似问题