我正在尝试使用TypeScript servicestack-client 连接到ServiceStack服务器的SSE事件。
通过发送
上面的代码成功地对servicestack API进行了身份验证,并且安全的API请求也正常工作。在所有登录身份验证完成后,将调用
但是这个对象有一个
我该如何实现经过身份验证的SSE连接呢?
通过发送
Authenticate
类并接收会话cookie进行身份验证:import { ServerEventsClient } from 'servicestack-client';
export class ServicestackService {
private sseClient: ServerEventsClient;
constructor() {
this.createSseClient();
}
login(username: string, password: string) {
let request = new Authenticate(username, password);
return this.sseClient.serviceClient.post(request);
}
startClient() {
this.sseClient.start();
console.log('eventSource created');
}
subscribeChannel(channel: string) {
this.sseClient.subscribeToChannels(channel);
}
private createSseClient() {
this.sseClient = new ServerEventsClient('http://ss_api_url', ['*'], {
handlers: { ...define handlers for onConnect & onMessage here... }
}
}
}
上面的代码成功地对servicestack API进行了身份验证,并且安全的API请求也正常工作。在所有登录身份验证完成后,将调用
startClient()
方法,并将eventSource
对象作为this.sseClient
属性创建。但是这个对象有一个
withCredentials: false
的问题!因此,任何以下的频道订阅都会失败,因为servicestack客户端没有发送Cookies
头。我该如何实现经过身份验证的SSE连接呢?