Cześć, próbuję skonfigurować (i użyć) aplikację real time w Laravel & Vue
plik laravel-echo-server.json umieściłem w aplikacji zaplecza, wygląda tak:
{
"authHost": "http://localhost:8000",
"authEndpoint": "/api/broadcasting/auth",
"clients": [
{
"appId": "0860a12b7220f3da",
"key": "58f49ae1df346de66257fd215d454742"
}
],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"secureOptions": 67108864,
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": true,
"allowOrigin": "http://localhost:8080",
"allowMethods": "GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
}
plik: BroadcastServiceProvider.php
public function boot()
{
Broadcast::routes(['prefix' => 'api', 'middleware' => ['auth:api']]);
require base_path('routes/channels.php');
}
kod po stronie klienta:
require('webrtc-adapter');
window.Cookies = require('js-cookie');
import Echo from "laravel-echo";
window.io = require('socket.io-client');
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ':6001',
key: '58f49ae1df346de66257fd215d454742',
cluster: '0860a12b7220f3da',
encrypted: true,
auth: {
headers: {
Authorization: 'Bearer ' + localStorage.getItem('token')
},
},
});
metody Vue
methods: {
loadData() {
Echo.join(this.channel)
.listen('NewConversationMessage', (data) => {
console.log('sd')
this.messages = data.data.data;
})
},
}
tutaj NewConversationMessage to nazwa utworzonego Eventu który wygląda tak:
/**
* @return PresenceChannel
*/
public function broadcastOn()
{
return new PresenceChannel($this->chanel);
}
public function broadcastWith()
{
$params = [ ];
$repo = new ChatMessagesRepository(); # to do konstruktora
$data = $repo->getAllMessages($params); # $this->repo->getAllMessages($params)
return ChatMessagesResource::collection($data);
}
i teraz mam pytanie czy jeśli całość mam podzielone i łączę się przez api dobrze się do tego zabrałem? Po stronie klienta średnio to działa :/