2 回答
TA貢獻1825條經驗 獲得超6個贊
有沒有辦法以類似的方式添加表單數據?
簡單回答是不
Laravel Echo 沒有在參數集中實現該功能的功能。
我們可以Form Data在開發工具請求中看到對象的原因是因為 pusher-js 在向服務器發出請求之前添加了它們。為了實現這一點,我們必須在請求執行之前操作推送器 API,但這偏離了該線程的原始主題。
因此,如果您想將數據發送到服務器,最簡單的方法是添加原始問題中指出的自定義標頭。
...
auth: {
headers: {
token: '123'
}
}
...
TA貢獻1797條經驗 獲得超6個贊
編輯 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 在評論中所說的那樣做到這一點,我真的想知道如果我們只是在創建后覆蓋選項,這是否會像這樣工作:)
老的
我正在調查這個。在這里我看到有一個headers選項如下:
private _defaultOptions: any = {
auth: {
headers: {},
},
authEndpoint: '/broadcasting/auth',
broadcaster: 'pusher',
csrfToken: null,
host: null,
key: null,
namespace: 'App.Events',
};
這是Connecter's default options 并且在它里面它也在這里constructor設置了一個 auth headercsrfToken
所以我猜你在創建 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'
}
}
});
希望這對你有用。請務必告訴我!:)
順便說一句,我沒有測試環境,所以我從未測試過它..
添加回答
舉報
