如何解决Angular 7 和 laravel-echo
所以我试图让后端 Laravel 和前端 Angular 正常工作。 Laravel 5.8 版和 Angular 7.2 我有我的活动
public function broadcastOn()
{
return new Channel('test');
}
public function broadcastAs() {
return 'message.sent';
}
我做了一个路由来调用它
Route::get('/fire',function () {
event(new \App\Events\Messages\MessageEvent());
return 'ok';
});
在 redis 和 laravel-echo-server 中注册事件
"PUBLISH" "test" "{\"event\":\"message.sent\",\"data\":{\"a\":\"a\",\"socket\":null},\"socket\":null}"
Channel: test
Event: message.sent
但是每当我尝试从 angular 连接到套接字时,就会出现某些故障,并且它既不连接也不抛出错误。响应表单套接字为 200
,每 25 秒获取一次 200
(echo sever 配置)但未建立 ws 连接且未捕获任何事件
棱角分明
import {Component,Injectable,OnInit} from '@angular/core';
import Echo from 'laravel-echo';
@Component({
moduleId: module.id.toString(),templateUrl: 'index.html',})
@Injectable()
export class MessagesPagesViewComponent {
echo: any;
constructor() {
const SocketIoClient = require('socket.io-client');
try {
this.echo = new Echo({
broadcaster: 'socket.io',host: 'localhost:6001',client: SocketIoClient,});
} catch (e) {
console.log(e);
}
this.echo.connector.socket.on('connect',() => {
console.log('CONNECTED');
});
this.echo.connector.socket.on('reconnecting',() => {
console.log('CONNECTING');
});
this.echo.connector.socket.on('disconnect',() => {
console.log('DISCONNECTED');
});
this.echo.connector.socket.on('test.message.sent',(data) => {
console.log('1',data);
});
this.echo.connector.socket.on('.message.sent',(data) => {
console.log('2',data);
});
this.echo.connector.socket.on('message.sent',(data) => {
console.log('3',data);
});
this.echo.join('test').joining((data) => {
console.log('joining',data);
}).leaving((data) => {
console.log('leaving',data);
});
this.echo.join('test2').joining((data) => {
console.log('joining',data);
});
this.echo.channel('test').listen('.message.sent',(data) => {
console.log('From laravel echo: ',data);
});
this.echo.channel('test2').listen('.message.sent',data);
});
console.log(this.echo);
}
}
laravel-echo-server.json
{
"authHost": "http://localhost","authEndpoint": "/broadcasting/auth","clients": [],"database": "redis","databaseConfig": {
"redis": {
"host": "172.24.0.2","port": "6379"
},"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": "*","allowMethods": "GET,POST","allowHeaders": "Origin,Content-Type,X-Auth-Token,X-Requested-With,Accept,Authorization,X-CSRF-TOKEN,X-Socket-Id"
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。