이 글은 laravel-echo-server를 사용하여 이벤트 방송 플랫폼을 구축하는 방법에 대한 글을 소개하는 글입니다. 참고할만한 가치가 있고 도움이 필요한 친구들에게 도움이 되었으면 좋겠습니다.
이 글은 이전 프로젝트에서 접했던 vue 프론트엔드에 대한 laravel 백그라운드 브로드캐스팅 메시지의 구현 과정을 기록합니다. Laravel에는 내장된 Socket.IO 서버 구현이 없지만 타사에서 구현한 Socket.IO 드라이버가 있습니다: laravel-echo-server는 미들웨어와 동일합니다: laravel + laravel-echo-server; + vue/ laravel-echo
자세한 소개는 https://github.com/tlaverdure...
laravel-echo-server
服务器直接搭建在laravel项目中:① 全局安装laravel-echo-server: npm install laravel-echo-server -g
;
② 控制台进入laravel项目,运行命令:laravel-echo-server init
在laravel项目中会多出一个laravel-echo-server.json
文件,里面包含了所有的配置信息;
③ 通过运行laravel-echo-server start
命令行启动服务
laravel-echo-server
服务器独立部署我们发现,其实只要有一个laravel-echo-server.json
文件就能启动服务,那么显然可以将服务独立出laravel项目进行部署(觉得没必要可以不用这么折腾)。
使用Http的方式推送消息至laravel-echo-server
服务器,格式如下:
POST http://app.dev:6001/apps/your-appId/events?auth_key=you-key'
用postman测试:
测试成功,laravel-echo-server
服务器搭建成功
定义BroadcastHttpPush.php
作为接口
<?php namespace App\HelpTrait; use GuzzleHttp\Client; trait BroadcastHttpPush { public function push($data) { $baseUrl = env('WEBSOCKET_BASEURL', 'http://localhost:6001/'); $appId = env('WEBSOCKET_APPID', '3ccfbd93b5e2906a'); $key = env('WEBSOCKET_KEY', '6509c546c053d59057a61e46ae9a7898'); $httpUrl = $baseUrl . 'apps/' . $appId . '/events?auth_key=' . $key; $client = new Client([ 'base_uri' => $httpUrl, 'timeout' => 2.0, ]); $response = $client->post($httpUrl, [ 'json' => $data ]); $code = $response->getStatusCode(); } }
使用:
<?php namespace App\Controllers; use App\HelpTrait\BroadcastHttpPush; class SendMessage { use BroadcastHttpPush; public function index() { $broadcastChannel = array( "channel" => "private-Message", // 通道名,`private-`表示私有 "name" => "sayHello", // 事件名 "data" => array( "status" => 200, "message" => "hello world!" ) ); $this->push($broadcastChannel); } }
定义UserActionNotification.vue
<template> <p> </p> </template> <script> import Echo from 'laravel-echo' import io from 'socket.io-client' export default { mounted() { window.io = io window.Echo = new Echo({ broadcaster: 'socket.io', host: 'http://localhost:6001', }) window.Echo.private('Message').listen('.sayHello', (res) => { if (res.status === 200) { console.log(res.message) } else { console.log('something wrong!') } }) } } </script> <style></style>
注:
事件sayHello
前面要加.
① laravel-echo-server를 전역적으로 설치: npm install laravel-echo-server -g
;
② 콘솔 laravel 프로젝트를 입력하고 laravel-echo-server init
laravel이 하나 더 있습니다 -echo-server.json 모든 구성 정보가 포함된 laravel 프로젝트
파일
3 laravel-echo-server start
명령줄을 실행하여 서비스를 시작하세요
1.2 laravel-echo-server
서버 독립적 배포실제로 laravel-echo-server.json
파일이 있는 한, 서비스가 시작될 수 있으므로 분명히 서비스는 laravel 프로젝트와 독립적으로 배포될 수 있습니다. (필요하지 않다고 생각하면 귀찮게 하지 마세요.)
Http를 사용하여 laravel-echo-server
서버에 메시지를 푸시합니다. 형식은 다음과 같습니다: rrreee
BroadcastHttpPush.php
를 인터페이스로 정의🎜rrreee🎜사용: 🎜rrreee🎜3. 🎜UserActionNotification.vue🎜rrreee🎜<code>정의:
이벤트 sayHello
앞에는 .
가 와야 합니다. 그렇지 않으면 다음을 수행해야 합니다. 이벤트의 도메인 이름 공간을 가져오세요. 🎜🎜관련 권장 사항: 🎜🎜🎜라라벨은 데이터베이스를 어떻게 운영하나요? Laravel 데이터베이스 작업의 세 가지 방법(코드) 🎜🎜🎜🎜Laravel 5.5에서 응답을 만드는 방법은 무엇입니까? 응답 생성 소개(코드) 🎜🎜위 내용은 laravel-echo-server를 사용하여 이벤트 방송 플랫폼을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!