Edit 1
Я действительно не уверен, что это действительно сработает, но можете ли вы попробовать это, когда сможете
class LaravelEcho extends Echo {
constructor(options) {
super(options);
this.setformData();
}
setformData(formData = this.options.formData) {
if (formData) {
let path =
"?" +
Object.entries(formData)
.map((ch) => ch.join("="))
.join("&");
this.options.authEndpoint += path;
this.connector.options = this.options;
// since you are using pusher
if (this.connector.pusher) {
this.connector.pusher.options = this.options;
}
// maybe also for socket.io too?
else if (this.connector.socket) {
this.connector.socket.options = this.options;
}
}
}
}
let myEcho = new LaravelEcho({
broadcaster: "pusher",
key: "somekey",
wsHost: "127.0.0.1",
wsPort: 6001,
encrypted: false,
disableStats: true,
forceTLS: false,
authEndpoint: "http://127.0.0.1:8000/broadcasting/auth",
formData: {
foo: "bar",
username: "username",
password: "password",
},
});
console.log(myEcho);
Я знаю, что это действительно не так, как вы хотите. Я пытался сделать это, как сказал @Islam в комментарии, и мне действительно интересно, будет ли это работать так, если мы просто переопределим параметры после создания:)
Old
Я изучал это. здесь Я видел, что есть опция headers
, как показано ниже:
private _defaultOptions: any = {
auth: {
headers: {},
},
authEndpoint: '/broadcasting/auth',
broadcaster: 'pusher',
csrfToken: null,
host: null,
key: null,
namespace: 'App.Events',
};
Это параметры Connecter
по умолчанию, а внутри constructor
он также устанавливает заголовок аутентификации для csrfToken
здесь
Итак, я предполагаю, что пока вы создаете свой Laravel / Echo, вы могли бы сделать,
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'somekey',
wsHost: '127.0.0.1',
wsPort: 6001,
encrypted: false,
disableStats: true,
forceTLS: false,
authEndpoint: 'http://127.0.0.1:8000/broadcasting/auth',
auth: {
headers: {
'X-CSRF-TOKEN': 'your-csrf-token'
'your-header': 'with-value'
}
}
});
Надеюсь, это сработает для вас. Пожалуйста, дайте мне знать! :)
Между прочим, у меня нет тестовой среды, поэтому я ее никогда не тестировал ..