angular - 如果连接不处于 'Connected' 状态,则无法发送数据

标签 angular typescript signalr angular6 signalr-hub

在 Angular 6 中使用 SignalR 进行一个非常简单的调用来设置连接/停止,其中我有以下代码:

signalR.helper.ts

  public static setupHub<T>(hubUrl: string, eventName: string, callback: (data: T) => void, ...params: SignalRParam[]): HubConnection {
    const token = localStorage.getItem(appConstant.token);
    const url = this.buidlUrl(hubUrl, ...params);
    const connection = new HubConnectionBuilder()
        .withUrl(url,
            { transport: HttpTransportType.WebSockets, accessTokenFactory: () => token })
        .build();
    environment.production && connection.start();
    !environment.production && connection.start().catch(err => console.error(err.toString()));
    connection.on(eventName, callback);
    return connection;
}

如果我尝试登录我的页面,我会在控制台上不断收到此错误:

signalR.helper.ts:19 Error: Cannot send data if the connection is not in the 'Connected' State.

我是 SignalR 和 Angular 的新手,为什么我不断收到此错误?

最佳答案

您首先需要确保您已开始连接

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chathub")
    .configureLogging(signalR.LogLevel.Information)
    .build();

async function start() {
    try {
        await connection.start();
        console.log("SignalR Connected.");
    } catch (err) {
        console.log(err);
        setTimeout(start, 5000);
    }
};

connection.onclose(async () => {
    await start();
});

// Start the connection.
start();

关于angular - 如果连接不处于 'Connected' 状态,则无法发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53878852/

相关文章:

reactjs - 创建-react-app --typescript : Cannot compile namespaces when the '--isolatedModules' flag is provided

asp.net-mvc - 从 MVC 中的 Controller 类获取客户端的 Connection Id

css - 改变垫子扩展指示器的旋转

typescript - 迁移到 angular2 RC4 路由

angular - 如何在 Angular 6 中导入 ag-grid 主题

Angular 2 : API call return an error

javascript - 在 Angular 2 中订阅后未定义值,但在 templateurl 中它可以显示

typescript - 使用 Typescript、Babel 7、装饰器保留元数据

session-variables - 为什么通过 HttpContext.Current 访问 session 不好[实践]?

c# - 如果不以管理员身份运行,SignalR、WPF 服务器不会启动