问题描述
我正在尝试使用Angular,Laravel和Pusher实现聊天。 聊天正在进行中,但现在我想对用户进行身份验证,以指示用户是否在线。 我知道要执行此操作,我需要设置私人房间而不是公共房间,当我尝试为用户进行身份验证时,我会获得419个未知状态。
角度代码:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { UserSessionService } from 'app/shared/_services/user-session.service';
import { ChatMessage } from 'app/shared/_models/chat-message.model';
import { environment } from 'environments/environment';
declare const Pusher: any;
@Injectable()
export class broadcastService {
readonly pusherKey = environment.pusherKey;
private channels = {};
newChatMessage = new Subject<ChatMessage>();
activeChanel = new Subject<any>();
constructor(private userSession: UserSessionService) {}
openChatSocket(chatId: number): void {
if (this.channels[chatId]) {
return;
}
const pusher = new Pusher(this.pusherKey,{
cluster: 'eu',encrypted: true,authEndpoint: environment.apiUrl + '/broadcasting/auth',auth: {
headers: {
'Authorization': this.userSession.getToken()
}
}
});
this.channels[chatId] = pusher.subscribe('private-chat-' + chatId);
this.activeChanel.next(this.channels[chatId])
this.channels[chatId].bind('new-message',fullMessageInfo => {
this.newChatMessage.next(fullMessageInfo.message);
});
}
closeChatSockets(): void {
Object.keys(this.channels).forEach(channel => {
this.channels[channel].unsubscribe();
});
this.channels = {};
}
}
我已经尝试在VerifyCsrftoken.PHP中排除http:// localhost:4200,但是它不起作用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)