Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以要多个吗;类别“;在一个连接上?_Javascript_C#_Websocket_Asp.net Core 2.0_Angular6 - Fatal编程技术网

Javascript 我可以要多个吗;类别“;在一个连接上?

Javascript 我可以要多个吗;类别“;在一个连接上?,javascript,c#,websocket,asp.net-core-2.0,angular6,Javascript,C#,Websocket,Asp.net Core 2.0,Angular6,我将设计一个SPA,使用Angular 6和.netcore 2作为后端API。我需要一个用于实时数据流和图表的套接字实现 我有一个页面需要3种不同的数据类型“实时流”,我的问题是-我能用一个websocket连接做到这一点吗?据我所知,我认为有一种方法可以在连接中创建某种队列或类似子流的东西,因此我可以有如下内容: socket = new WebSocket(url); socket.on('dataOne', () => { // proccess here } socket.on(

我将设计一个SPA,使用Angular 6和.netcore 2作为后端API。我需要一个用于实时数据流和图表的套接字实现

我有一个页面需要3种不同的数据类型“实时流”,我的问题是-我能用一个websocket连接做到这一点吗?据我所知,我认为有一种方法可以在连接中创建某种队列或类似子流的东西,因此我可以有如下内容:

socket = new WebSocket(url);
socket.on('dataOne', () => { // proccess here }
socket.on('dataTwo', () => { // proccess here }
socket.on('dataThree', () => { // proccess here }
我想知道这是否是可能的,如果是的话,你能给我一个可以用于客户端和API的库吗


我研究过像C#and的SignalR这样的LIB,但我不能完全确定。感谢您的各种建议和解释

JavaScript和C#都有现有的信号器客户端。你应该用那些。除此之外,我真的不知道你在说什么。你不需要单独的集线器,如果你是这个意思的话。归根结底,signar是非常简单的:您只需发送一条消息,客户机就绑定到该消息类型,并在收到消息时执行某些操作。相反的过程大体上是相同的:客户机只是“调用”在中心上定义的某个方法,然后该方法执行某些操作

因此,您几乎可以绑定到任何客户端,而服务器只需要发送特定的消息就可以使某些事情发生。例如:

let connection = new signalR.HubConnectionBuilder()
    .withUrl("/myhub")
    .build();
connection.on("dataOne", data => { ... });
connection.on("dataTwo", data => { ... });
connection.on("dataThree", data => { ... });
connection.start().catch(err => console.error(err.toString()));
然后,服务器端:

 await _hub.Clients.All.SendAsync("dataOne", data);

您应该只保持与一个的连接,并为您的类别使用多个代理。 像这样的

var contosoChatHubProxy = connection.createHubProxy('ContosoChatHub');
contosoChatHubProxy.on('addContosoChatMessageToPage', function(userName, message) {
    console.log(userName + ' ' + message);
});

var categoryOneHubProxy = connection.createHubProxy('categoryOne');
var categoryTwoHubProxy = connection.createHubProxy('categoryTwo');
详情