代码之家  ›  专栏  ›  技术社区  ›  Sam

connection.closed不是函数信号器

  •  3
  • Sam  · 技术社区  · 6 年前

    我对中的封闭事件感到困惑 SignalR 是的。很明显,有一些关于如何称呼它的争论。 onClosed() , closed() 等等。

    在我的 信号机 客户端的侦听器,我正在尝试实现此事件,但我不断收到一个错误,说它不是函数。我试过 一旦关闭() 关闭() 是的。同样的错误如何在客户端检测已关闭的事件?

    const signalRListener = () => {
    
       connection.on('new_message', message => {
    
          // Handle incoming message.
          // This is working fine.
       })
    
       connection.closed(e => {
    
           // Try to restart connection but I never get here to due error I'm receiving
       })
    
    }
    

    我做错什么了?

    以下是我如何开始连接的:

    export const signalRStart = (token) => {
    
        connection = new signalR.HubConnectionBuilder()
            .withUrl("/chat?access_token=" + token)
            .configureLogging(signalR.LogLevel.Information)
            .build();
    
        // Set connection time out
        connection.serverTimeoutInMilliseconds = 30000;
    
        // Start connection
        connection.start();
    
        // Invoke listener
        signalRListener();
    }
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Nkosi    6 年前

    作为最佳实践,请致电 connection.start 之后 connection.on 因此,在接收任何消息之前,都会注册处理程序。

    export const signalRStart = (token) => {
    
        const connection = new signalR.HubConnectionBuilder()
            .withUrl("/chat?access_token=" + token)
            .configureLogging(signalR.LogLevel.Information)
            .build();
    
        // Set connection time out
        connection.serverTimeoutInMilliseconds = 30000;
    
        //register listeners
    
        //Registers a handler that will be invoked when the hub method with the specified method name is invoked.
        connection.on('new_message', message => {    
            // Handle incoming message.
            // This is working fine.
        });
    
        //Registers a handler that will be invoked when the connection is closed.
        connection.onclose(e => {
            // ...
        });
    
        // Start connection
        connection.start();
    
    };
    

    参考 ASP.NET Core SignalR JavaScript client

    参考 SignalR JavaScript API - HubConnection class