Signalr 从客户端调用服务器方法时发出信号

Signalr 从客户端调用服务器方法时发出信号,signalr,Signalr,我有一个mvc应用程序并实现了SignarlR。使用SignalR的目的是允许我的后端控制器向前端客户端发送更新,以通知其进度。控制器上的方法可能是一个长时间运行的进程。我在客户机上注册了4个不同的事件,可以从控制器调用这些事件。一切都很好 所以我决定,如果我的用户愿意,我想让他们能够取消长时间运行的进程。因此,我在Hub中创建了另一个方法,客户端可以调用该方法,该方法将设置一个标志,后端可以检查该进程是否被取消 由于某些原因,我无法让客户端的服务器调用正常工作。它不会调用服务器方法。我有下面每

我有一个mvc应用程序并实现了SignarlR。使用SignalR的目的是允许我的后端控制器向前端客户端发送更新,以通知其进度。控制器上的方法可能是一个长时间运行的进程。我在客户机上注册了4个不同的事件,可以从控制器调用这些事件。一切都很好

所以我决定,如果我的用户愿意,我想让他们能够取消长时间运行的进程。因此,我在Hub中创建了另一个方法,客户端可以调用该方法,该方法将设置一个标志,后端可以检查该进程是否被取消

由于某些原因,我无法让客户端的服务器调用正常工作。它不会调用服务器方法。我有下面每一部分的代码片段

集线器类

public class ScanInventoryHub : Hub
{
    private string _connectionId = string.Empty;
    private bool _scanCancelled = false;

    public bool ScanCancelled
    {
        get
        {
            return _scanCancelled;
        }
    }

    public ScanInventoryHub(string connectionId)
    {
        _connectionId = connectionId;
    }

    public void SendMessage(string message)
    {
        var hubContext = GlobalHost.ConnectionManager.GetHubContext<ScanInventoryHub>();
        hubContext.Clients.Client(_connectionId).addNewMessage(message);
    }

    public void SetProgressCount (int count)
    {
        var hubContext = GlobalHost.ConnectionManager.GetHubContext<ScanInventoryHub>();
        hubContext.Clients.Client(_connectionId).setStatusBar(count);
    }

    public void IncrementItemProgressBar()
    {
        var hubContext = GlobalHost.ConnectionManager.GetHubContext<ScanInventoryHub>();
        hubContext.Clients.Client(_connectionId).incrementItemProgressBar();
    }

    public void IncrementProgressBar(int percentage)
    {
        var hubContext = GlobalHost.ConnectionManager.GetHubContext<ScanInventoryHub>();
        hubContext.Clients.Client(_connectionId).incrementProgressBar(percentage);
    }

    public void CancelScan()
    {
        _scanCancelled = true;
        Debug.WriteLine("Cancel Scan");
    }
}
取消按钮单击事件处理程序

    CancelScan: function (e) {
        messageHubProxy.server.cancelScan();
    }
下面是我的本地跑步记录

[14:53:44 GMT-0400 (Eastern Daylight Time)] SignalR: Client subscribed to hub 'scaninventoryhub'.

[14:53:44 GMT-0400 (Eastern Daylight Time)] SignalR: Negotiating with '/signalr/negotiate?
clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22scaninventoryhub%22%7D%5D'.

[14:53:44 GMT-0400 (Eastern Daylight Time)] SignalR: Negotiating with '/signalr/negotiate?clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22scaninventoryhub%22%7D%5D'.

[14:53:45 GMT-0400 (Eastern Daylight Time)] SignalR: webSockets transport starting.

[14:53:45 GMT-0400 (Eastern Daylight Time)] SignalR: Connecting to websocket endpoint 'ws://localhost:5325/signalr/connect?transport=webSockets&clientProtocol=2.1&connectionToken=UtyYkw5kgPhCQH40iaWKHE2SE4SWGq2q3A0EJQ%2FopAsCPr61jfIBD301cBT3iwxZX9%2Fkk4wuh%2BPljBciCFNYtubMUMnlU1MPF2a88tFRKaDQbebT3OrHuTVLEoY4qLzY&connectionData=%5B%7B%22name%22%3A%22scaninventoryhub%22%7D%5D&tid=6'.
SCRIPT12008: WebSocket Error: Incorrect HTTP response. Status code 302, Redirect

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: Websocket closed.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: Closing the Websocket.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: webSockets transport failed to connect. Attempting to fall back.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: serverSentEvents transport starting.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: This browser doesn't support SSE.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: serverSentEvents transport failed to connect. Attempting to fall back.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: foreverFrame transport starting.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: Binding to iframe's load event.

[14:53:47 GMT-0400 (Eastern Daylight Time)] SignalR: Iframe transport started.

[14:53:47 GMT-0400 (Eastern Daylight Time)] SignalR: foreverFrame transport connected. Initiating start request.

[14:53:48 GMT-0400 (Eastern Daylight Time)] SignalR: The start request succeeded. Transitioning to the connected state.

[14:53:48 GMT-0400 (Eastern Daylight Time)] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332, keep alive timeout of 20000 and disconnecting timeout of 30000

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'setStatusBar' on hub 'ScanInventoryHub'.

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:53:51 GMT-0400 (Eastern Daylight Time)] SignalR: foreverFrame transport timed out when trying to connect.

[14:53:55 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:53:55 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:53:56 GMT-0400 (Eastern Daylight Time)] SignalR: Invoking scaninventoryhub.CancelScan

[14:53:59 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:53:59 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:02 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:02 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:05 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:05 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:08 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:08 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:10 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:12 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:14 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:16 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:18 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:19 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:19 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:22 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:26 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:29 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:32 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:35 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:35 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:38 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:42 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:42 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:43 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementItemProgressBar' on hub 'ScanInventoryHub'.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: scaninventoryhub.CancelScan failed to execute. Error: Error: Send failed.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Stopping connection.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Stopping forever frame.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Fired ajax abort async = true.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Stopping the monitoring of the keep alive.

所以,没有人知道这应该如何工作?因为似乎没有人能够回答我的问题,所以有没有其他组我应该将此问题发布到?所以没有人知道这应该如何工作?因为似乎没有人能够回答我的问题,所以有没有其他组我应该将此问题发布到?
[14:53:44 GMT-0400 (Eastern Daylight Time)] SignalR: Client subscribed to hub 'scaninventoryhub'.

[14:53:44 GMT-0400 (Eastern Daylight Time)] SignalR: Negotiating with '/signalr/negotiate?
clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22scaninventoryhub%22%7D%5D'.

[14:53:44 GMT-0400 (Eastern Daylight Time)] SignalR: Negotiating with '/signalr/negotiate?clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22scaninventoryhub%22%7D%5D'.

[14:53:45 GMT-0400 (Eastern Daylight Time)] SignalR: webSockets transport starting.

[14:53:45 GMT-0400 (Eastern Daylight Time)] SignalR: Connecting to websocket endpoint 'ws://localhost:5325/signalr/connect?transport=webSockets&clientProtocol=2.1&connectionToken=UtyYkw5kgPhCQH40iaWKHE2SE4SWGq2q3A0EJQ%2FopAsCPr61jfIBD301cBT3iwxZX9%2Fkk4wuh%2BPljBciCFNYtubMUMnlU1MPF2a88tFRKaDQbebT3OrHuTVLEoY4qLzY&connectionData=%5B%7B%22name%22%3A%22scaninventoryhub%22%7D%5D&tid=6'.
SCRIPT12008: WebSocket Error: Incorrect HTTP response. Status code 302, Redirect

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: Websocket closed.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: Closing the Websocket.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: webSockets transport failed to connect. Attempting to fall back.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: serverSentEvents transport starting.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: This browser doesn't support SSE.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: serverSentEvents transport failed to connect. Attempting to fall back.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: foreverFrame transport starting.

[14:53:46 GMT-0400 (Eastern Daylight Time)] SignalR: Binding to iframe's load event.

[14:53:47 GMT-0400 (Eastern Daylight Time)] SignalR: Iframe transport started.

[14:53:47 GMT-0400 (Eastern Daylight Time)] SignalR: foreverFrame transport connected. Initiating start request.

[14:53:48 GMT-0400 (Eastern Daylight Time)] SignalR: The start request succeeded. Transitioning to the connected state.

[14:53:48 GMT-0400 (Eastern Daylight Time)] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332, keep alive timeout of 20000 and disconnecting timeout of 30000

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'setStatusBar' on hub 'ScanInventoryHub'.

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:53:49 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:53:51 GMT-0400 (Eastern Daylight Time)] SignalR: foreverFrame transport timed out when trying to connect.

[14:53:55 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:53:55 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:53:56 GMT-0400 (Eastern Daylight Time)] SignalR: Invoking scaninventoryhub.CancelScan

[14:53:59 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:53:59 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:02 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:02 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:05 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:05 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:08 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:08 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:10 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:12 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:14 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:16 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:18 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:19 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:19 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:22 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:26 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:29 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:32 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:35 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:35 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:38 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:42 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementProgressBar' on hub 'ScanInventoryHub'.

[14:54:42 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'addNewMessage' on hub 'ScanInventoryHub'.

[14:54:43 GMT-0400 (Eastern Daylight Time)] SignalR: Triggering client hub event 'incrementItemProgressBar' on hub 'ScanInventoryHub'.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: scaninventoryhub.CancelScan failed to execute. Error: Error: Send failed.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Stopping connection.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Stopping forever frame.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Fired ajax abort async = true.

[14:54:44 GMT-0400 (Eastern Daylight Time)] SignalR: Stopping the monitoring of the keep alive.