当前位置: 首页 > news >正文

做app的模板下载网站有哪些做暧暧的网站

做app的模板下载网站有哪些,做暧暧的网站,电子商务网站建设可行性分析,西宁网站建设公司哪家好做了一个基于 Swoole 的 WebSocket 扩展包,可以用来做实时状态推送,或者自定义消息处理实现 im,有需要的可以看看: [giorgio-socket] 使用方法 安装 安装扩展包 composer require wu/giorgio-socket发布配置文件 php artisan vendor:pu…

做了一个基于 Swoole 的 WebSocket 扩展包,可以用来做实时状态推送,或者自定义消息处理实现 im,有需要的可以看看: [giorgio-socket]

在这里插入图片描述

使用方法

安装

安装扩展包

composer require wu/giorgio-socket

发布配置文件

php artisan vendor:publish --provider="GiorgioSocket\Providers\SocketServiceProvider"

运行 Socket 服务

php artisan socket:start

注意事项

  • 可以通过实现 GiorgioSocket\Services\Handlers\Interfaces 下的接口类来自定义自己的业务逻辑。

  • 如果要从服务端发送消息,这里有两种方式:

    • 第一种,借助 Laravel HTTP 客户端
      Route::get('/socket', function () {\Illuminate\Support\Facades\Http::asForm()->post('http://127.0.0.1:9501', ['to' => 2,'message' => 'server message',]);
      });
      
    • 第二种:借助 Laravel Listener,需要将 .env 文件中的 QUEUE_CONNECTION 配置修改为 redis 或其他异步队列。配置更改后,运行以下命令:php-artisan queue:work --queue=socket-listener监听队列,然后按以下代码调用 event
      Route::any('socket', function (Request $request){\GiorgioSocket\Events\SocketEvent::dispatch($request->get('to'), $request->get('message'));
      });
      
  • 如果你正在使用 laravel/breeze 扩展包,并且使用了 Blade 模板,可以将以下代码粘贴到 dashboard.blade.php 中进行快速测试:

      @auth<div class="py-12"><div class="max-w-7xl mx-auto sm:px-6 lg:px-8"><div class="bg-white dark:bg-gray-800 overflow-hidden shadow-sm sm:rounded-lg"><div class="grid grid-cols-1 md:grid-cols-2"><div class="p-6" id="server-message">messages:<br/></div><div class="p-6"><label class="block font-medium text-sm text-gray-700 dark:text-gray-300" for="from">from</label><input class="border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm block mt-1 w-full" value="{{ auth()->user()->getKey() }}" id="from"><label class="block font-medium text-sm text-gray-700 dark:text-gray-300" for="to">to</label><input class="border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm block mt-1 w-full" value="" id="to"><label class="block font-medium text-sm text-gray-700 dark:text-gray-300" for="message">message</label><textarea class="border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-sm block mt-1 w-full" id="message"></textarea><input class="inline-flex items-center px-4 py-2 bg-gray-800 dark:bg-gray-200 border border-transparent rounded-md font-semibold text-xs text-white dark:text-gray-800 uppercase tracking-widest hover:bg-gray-700 dark:hover:bg-white focus:bg-gray-700 dark:focus:bg-white active:bg-gray-900 dark:active:bg-gray-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150 mt-3" type="button" id="submit" value="submit"></div></div></div></div></div><script type="text/javascript">let heartBeatTimer = 0;let socket = connectWebSocket();function startHeartbeat(interval) {interval = interval || 30;heartBeatTimer = setInterval(function () {sendMessage(null, "heart_beat");}, interval * 1000);}function stopHeartbeat() {clearInterval(heartBeatTimer);}function connectWebSocket() {const wsServer = 'ws://127.0.0.1:9501';const socket = new WebSocket(wsServer);let userId = document.getElementById('from').value;socket.onopen = function (evt) {let data = {user_id: userId,type: 'connect'};console.log('open', data)socket.send(JSON.stringify(data));};socket.onmessage = function (evt) {console.log('get message from server: ' + evt.data);if (evt.data !== 'heart_beat') {let data = JSON.parse(evt.data);let message = document.getElementById("server-message")message.innerHTML += data.user_name + ': ' + data.data + '<br/>'}};socket.onerror = function (evt) {console.log(evt);};socket.onclose = function () {let data = {user_id: userId,type: 'close'};socket.send(JSON.stringify(data));};return socket;}function sendMessage(to, message) {if (socket != null && socket.readyState === WebSocket.OPEN) {if (message !== 'heart_beat') {let messageBox = document.getElementById("server-message")messageBox.innerHTML += 'me: ' + message + '<br/>'}let from = document.getElementById("from")socket.send(JSON.stringify({user_id: from.value,user_name: '{{ auth()->user()->name }}',to: to,type: 'message',data: message,}));console.log("webSocket send message:" + JSON.stringify({user_id: from.value,user_name: '{{ auth()->user()->name }}',to: to,type: 'message',data: message,}));} else {console.log("webSocket closed");}}let button = document.getElementById("submit");button.addEventListener('click', function () {let message = document.getElementById("message");let to = document.getElementById("to");sendMessage(to.value, message.value)});</script>@endauth
    

    如有任何疑问,欢迎提交 [issue]

http://www.yayakq.cn/news/417644/

相关文章:

  • 网站服务器租一个月公司网站系统建设策划书
  • 公司网站的seo优化怎么做上海建站模板厂家
  • 泉州最专业微信网站建设公司关键词seo优化服务
  • 商丘做网站的费用seo如何优化网站推广
  • 跨境网站入口亿缘网站建设
  • 零食天堂专做零食推荐的网站公司变更法人一般需要多少时间
  • h5企业网站源码前端用什么软件开发
  • 潍坊潍微贷是哪家网站建设的德阳网站建设网站
  • 建设通网站原理cloudflare cdn
  • 东莞微网站制作免费咨询英文
  • 企业网站建设应该注意什么事项问题注册城乡规划师报考时间2024
  • 丛台专业做网站百度云登录
  • 建设网站和网页有啥区别godaddy怎么建设网站
  • 虚拟主机销售网站在外国做玄幻小说网站
  • 建筑工程找活网站网络工程师免费教程
  • 如何用电子邮箱做网站品牌对于企业的重要性
  • 网站建设信息网店营销的推广方法有哪些
  • 兰州做网站优化芯片设计公司
  • 邹城网站开发设计的好看的网站
  • 老罗做的网站安徽白云集团网站建设
  • 网站数据库太大搬家还原500错误福清市建设局监督站网站
  • 深圳团购网站建设网站绑定多个域名
  • 自学做网站可以赚钱吗seo网站结构优化
  • 喜满堂网站建设国内seo公司哪家最好
  • 灰色推广网站建设与网站优化
  • 手机网站源程序用html5做的网站
  • 古镇建设网站后台网站更新 网站没显示
  • 网站制作一般哪家好wordpress微信没缩略图
  • 网站优化策略wordpress视屏类型不受支持
  • 学校网站建设栏目设置广告策划公司简介