SignalR javascript客户端没有从集线器中获取事件

时间:2016-07-29 13:15:27

标签: javascript c# asp.net websocket signalr

我在集线器上有一个方法但是我没有收到任何消息。我从我的用户获取连接ID到connectionid映射字典并循环遍历这些connectionid,然后在客户端调用一个名为deviceDiscovered的方法我还可以确认浏览器确实连接到集线器

这是我的中心方法

public async Task DetectDevice(dynamic message)
    {
        //We will be searching via the userid
        var connectionId = Context.ConnectionId;
        //now we get the connectionID from the table.
        var connectionObj = ConnectionTable[connectionId];

        //we now check whether this is a pathfinder or browser client
        if (connectionObj.clientType == "pathfinder")
        {
            /*The pathfinder initiated the request and so this means the message should be forwarded to the browser client
             that requested this resource*/

            //Grab the data out of the dictionary.
            PathfinderDetection deviceDiscoveredNotification = JsonConvert.DeserializeObject<PathfinderDetection>(message);
            var userId = deviceDiscoveredNotification.userId;
            var sysInfo = deviceDiscoveredNotification.sysInfo;
            var found = deviceDiscoveredNotification.data;

            if (found == "FOUND")
            {
                var deviceId = deviceDiscoveredNotification.deviceID;

                var connections = ConnectionTable.Where(val => val.Value.id == connectionObj.id).Select(key => key.Key).ToList();
                foreach (string connection in connections)
                {
                    Clients.Client(connection).deviceDiscovered(deviceId);
                }


            }
            else
            {

                //call a method on client side.
                Clients.Group(userId.ToString()).noDevice("NOTFOUND");
            }

我可以看到deviceID变量已填充且连接存在,但在查看客户端时无法从集线器返回任何内容

这是我的客户端代码:

<script>
  $(document).ready(function(){
    var connection = $.hubConnection("http://localhost:59016");
    var contosoChatHubProxy = connection.createHubProxy('metrics');

    contosoChatHubProxy.on('taskAdded', function(data){
      console.log(data);
    });

    contosoChatHubProxy.on('deviceDiscovered', function(data) {
        console.log(data);
    });

    contosoChatHubProxy.on('taskUpdate', function(data){
      console.log(data);
    });




    contosoChatHubProxy.on('noDevice', function(found) {
        console.log(found);
    });
  });
</script>

0 个答案:

没有答案