谈谈利用workerman实现即时聊天功能的方法

本篇文章给大家介绍一下使用workerman实现即时聊天的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

谈谈利用workerman实现即时聊天功能的方法

相关推荐:《workerman教程》

开发文档:http://doc2.workerman.net/

下载服务器端安装文件:

谈谈利用workerman实现即时聊天功能的方法

 有windows版和linux版两个版本,我下载的linux版,在windows上也可以运行。

打开后有这些文件:

谈谈利用workerman实现即时聊天功能的方法

把这个文件放在服务器上或者项目中都可以,需要运行的就是最后一个start_for_win.bat文件。

谈谈利用workerman实现即时聊天功能的方法

运行成功。

修改start_gateway.php文件:

<?php/** * This file is part of workerman. * * Licensed under The MIT License * For full copyright and license information, please see the MIT-LICENSE.txt * Redistributions of files must retain the above copyright notice. * * @author walkor * @copyright walkor * @link http://www.workerman.net/ * @license http://www.opensource.org/licenses/mit-license.php MIT License */use WorkermanWorker;use WorkermanWebServer;use GatewayWorkerGateway;use GatewayWorkerBusinessWorker;use WorkermanAutoloader;// 自动加载类require_once __DIR__ . '/../../vendor/autoload.php';// gateway 进程,这里使用Text协议,可以用telnet测试$gateway = new Gateway("websocket://0.0.0.0:8282");// gateway名称,status方便查看$gateway->name = 'YourAppGateway';// gateway进程数$gateway->count = 4;// 本机ip,分布式部署时使用内网ip$gateway->lanIp = '127.0.0.1';// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口$gateway->startPort = 2900;// 服务注册地址$gateway->registerAddress = '127.0.0.1:1238';// 心跳间隔$gateway->pingInterval = 60;// 心跳数据$gateway->pingData = '{"type":"ping"}';/*// 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调$gateway->onConnect = function($connection){    $connection->onWebSocketConnect = function($connection , $http_header)    {        // 可以在这里判断连接来源是否合法,不合法就关掉连接        // $_SERVER['HTTP_ORIGIN']标识来自哪个站点的页面发起的websocket链接        if($_SERVER['HTTP_ORIGIN'] != 'http://kedou.workerman.net')        {            $connection->close();        }        // onWebSocketConnect 里面$_GET $_SERVER是可用的        // var_dump($_GET, $_SERVER);    };};*/// 如果不是在根目录启动,则运行runAll方法if(!defined('GLOBAL_START')){    Worker::runAll();}

第24行,把tcp协议改为websocket协议;

第38行和40行,设置服务器向客户端发送的心跳时间,检测客户端是否连接,未连接将会断开。

下面的内容都是默认注释掉的,根据自己的需要打开或者修改。

再次运行start_for_win.bat文件:

ViiTor实时翻译 ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

ViiTor实时翻译 116 查看详情 ViiTor实时翻译

谈谈利用workerman实现即时聊天功能的方法

 协议就变为websocket协议了,现在就可以做项目内的操作了。

还需要再下载一个文件:https://github.com/walkor/GatewayClient

谈谈利用workerman实现即时聊天功能的方法

 把这几个文件放进thinkphp的extend文件夹下(我用的是thinkphp5.0版本):

谈谈利用workerman实现即时聊天功能的方法

 在Gateway.php的文件中方法几乎都写好了。

写了一个简单的前端页面:

谈谈利用workerman实现即时聊天功能的方法

                                                    
  • ws://127.0.0.1:8282
{volist name="msg" id="vo" empty="这里没有数据" key ='s'}
    {$vo.user_name}:     {$vo.msg}     {$vo.createtime}
  {/volist}
// var ws = new WebSocket("ws://123.56.216.232:8282"); var ws = new WebSocket("ws://127.0.0.1:8282"); ws.onopen = function() { $('#msgUl').append('
  • 已连接上...
  • ') sendValue(); }; ws.onmessage = function(evt) { $('#msgUl').append('
  • 接收到:' + evt.data + '
  • ') var obj = JSON.parse(evt.data); if (obj.type == 'onConnect') { // 连接成功 $('#msgUl').append('
  • client_id:' + obj.client_id + '
  • ') $.ajax({ type:"POST", url:"/index.php/api/Index/user_bind", data:{ client_id:obj.client_id }, dataType: "html", success: function(data){ console.log('成功') } }); } else if (obj.type == 'ping') { // 心跳检测 不做任何处理 } else if (obj.type == 'chatGroup') { // 群组聊天 $('#msgUl').append('
  • 接收到:' + evt.data + '
  • ') } }; ws.onclose = function() { // console.log('连接已关闭...'); $('#msgUl').append('
  • 连接已关闭...
  • ') }; function sendValue() { $('#sendButton').click(function() { var thisValue = $('#sendValue').val(); if (thisValue) { ws.send(thisValue); $('#msgUl').append('
  • 发送数据:' + thisValue + '
  • ') $.get("/index.php/api/Index/send_msg/msg/"+thisValue,function (data,status) { console.log('成功:'+thisValue) }); } }) }

     第42—52行把client_id传到后台,与用户表中用户进行绑定。

    后台代码:

    where($where)->select();        foreach ($msg as $key=>$val){            $msg[$key]['createtime']=date('Y-m-d H:i:s',$val['createtime']);            $msg[$key]['user_name']=Db::name('user')->where(['id'=>$val['from_id']])->value('name');        }        $this->assign('msg',$msg);        return view();    }    //绑定用户    public function user_bind($user_id=1){        //$user_id=1; //发送人用户id        $client_id = input('post.client_id');//        $user=Db::name('user')->where(['id'=>$user_id])->find();        Gateway::bindUid($client_id, 1);        return $client_id;    }    //发送信息    public function send_msg(){        $msg=input('msg');        if($msg){            $data=[              'msg'=>$msg,              'from_id'=>1,              'to_id'=>2,              'createtime'=>time()            ];            Db::name('msg')->insert($data);            Gateway::sendToUid(1,$msg);            Gateway::sendToUid(2,$msg);        }        return 'success';    }}

    发送消息存入数据库,页面显示即可。

    谈谈利用workerman实现即时聊天功能的方法

    更多计算机编程相关知识,请访问:编程视频!!

    以上就是谈谈利用workerman实现即时聊天功能的方法的详细内容,更多请关注创想鸟其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
    发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/349134.html

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    晕了!主播将《死亡搁浅》画面变成了要维持平衡的货物
    上一篇 2025年11月5日 21:33:40
    小编教你win10如何查看电脑配置信息
    下一篇 2025年11月5日 21:33:43

    相关推荐

    • Workerman网络编程实践:构建实时数据同步系统

      workerman网络编程实践:构建实时数据同步系统 引言:现在,随着互联网的高速发展和智能设备的普及,实时数据同步系统成为各个行业不可或缺的一部分。实时数据同步系统可以将数据快速地从一个源同步到多个目标,确保数据的准确性和及时性。本文将介绍如何使用PHP扩展库Workerman来构建一个高效的实时…

      用户投稿 2026年9月22日
      100
    • Workerman开发技巧大揭秘:提升网络应用性能的实用技巧

      workerman开发技巧大揭秘:提升网络应用性能的实用技巧 引言:Web应用程序的性能对于用户体验至关重要。网络应用性能的提升除了优化前端页面加载速度外,后端服务器的处理能力也是不可忽视的。在这方面,Workerman是一个强大的PHP框架,它可以帮助我们构建高性能的网络应用。本文将揭示一些实用的…

      用户投稿 2026年9月22日
      000
    • Workerman网络编程实践:构建可靠的即时数据同步系统

      workerman网络编程实践:构建可靠的即时数据同步系统 随着互联网和移动设备的普及,即时通讯变得越来越重要。在不同设备和平台之间实现即时通讯和数据同步已经成为开发者的常见需求。在这篇文章中,我们将探讨如何使用Workerman网络编程框架构建一个可靠的即时数据同步系统。 Workerman简介W…

      用户投稿 2026年9月22日
      100
    • Workerman开发技巧指南:优化网络通信性能的方法

      workerman开发技巧指南:优化网络通信性能的方法 引言:在当今互联网时代,高性能的网络通信是许多应用程序的关键需求之一。Workerman,作为PHP领域中一款强大的网络通信框架,可以帮助开发者轻松构建高性能的网络应用。本文将介绍一些优化网络通信性能的方法,帮助开发者充分发挥Workerman…

      用户投稿 2026年9月22日
      000
    • Workerman网络编程实战:打造高性能的即时通讯系统

      workerman网络编程实战:打造高性能的即时通讯系统 引言:随着互联网的高速发展,即时通讯系统越来越受到用户的关注。传统的即时通讯系统,如QQ、微信等,在用户数量庞大、消息高并发的情况下,往往面临性能瓶颈。为了解决这一问题,开源项目Workerman应运而生。本文将介绍如何使用Workerman…

      用户投稿 2026年9月22日
      200
    • PHP实时输出如何与消息队列集成_PHP实时输出与消息队列结合

      答案:PHP通过消息队列解耦耗时任务与用户响应,利用flush()实现实时输出感知,结合RabbitMQ、Redis等队列将任务异步处理,前端通过轮询或SSE获取进度,提升系统性能与用户体验。 PHP 实时输出与消息队列的结合,关键在于解耦耗时任务和即时响应用户。虽然 PHP 本身是同步阻塞的,但通…

      2026年9月22日
      100
    • Workerman开源库详解:快速搭建高并发服务器应用的实例分享

      workerman开源库详解:快速搭建高并发服务器应用的实例分享 引言:在IT领域,随着互联网的快速发展,高并发服务器应用的需求越来越大。为了满足这一需求,开发者们寻求各种方法和工具来搭建高效且具有良好扩展性的服务器应用。而Workerman作为一款PHP开源库,提供了快速搭建高并发服务器应用的解决…

      用户投稿 2026年9月22日
      000
    • Workerman开发实战:实现分布式消息队列系统

      workerman开发实战:实现分布式消息队列系统 引言:在现代应用程序中,消息队列系统是一种重要的组件,用于实现应用程序之间的异步通信。在高并发的环境下,消息队列系统可以起到削峰填谷的作用,提高整体系统的稳定性和性能。本文将介绍如何使用Workerman框架开发一个分布式消息队列系统,并提供相关代…

      用户投稿 2026年9月22日
      000
    • Workerman与PHP协同开发:构建高性能的Web应用的最佳实践

      workerman与php协同开发:构建高性能的web应用的最佳实践 引言:在Web应用开发中,性能是一个非常重要的因素。为了提供快速和高效的服务,开发人员需要选择适当的工具和技术来构建他们的应用程序。在本文中,我们将介绍一种使用Workerman和PHP协同开发的最佳实践,以构建高性能的Web应用…

      用户投稿 2026年9月22日
      000
    • Workerman开发技巧指南:优化TCP/IP通信性能的秘笈

      workerman开发技巧指南:优化tcp/ip通信性能的秘笈 引言:在网络编程中,TCP/IP通信是一种常用的方式。而Workerman作为一款高性能的PHP Socket网络编程框架,能够轻松地实现TCP/IP通信。然而,要想实现高效的通信性能,开发者需要掌握一些技巧。本篇文章将向你介绍一些Wo…

      用户投稿 2026年9月22日
      100
    • Workerman网络编程实践:构建实时数据同步系统的实例

      workerman网络编程实践:构建实时数据同步系统的实例 引言:随着互联网技术的不断发展和应用,实时数据同步成为了当前许多系统和应用的核心需求之一。在实现实时数据同步系统时,网络编程是一项关键的技术。本文将介绍如何使用Workerman网络编程框架来构建一个简单而实用的实时数据同步系统,并结合代码…

      用户投稿 2026年9月22日
      100
    • Workerman与PHP协同开发:构建高性能的Web应用程序

      workerman与php协同开发:构建高性能的web应用程序 引言:在今天互联网高速发展的时代,Web应用程序的高性能已成为用户体验和竞争力的重要因素。而PHP作为一种广泛使用的服务器端开发语言,其性能优化一直备受关注。本文将介绍如何利用Workerman与PHP协同开发,从而构建高性能的Web应…

      用户投稿 2026年9月22日
      100
    • Workerman开发踩坑指南:解决网络应用的常见问题

      workerman开发踩坑指南:解决网络应用的常见问题 引言:在网络应用开发过程中,经常会遇到一些常见的问题。为了帮助读者更好地应对这些问题,本文将介绍一些常见问题及其解决方法。我们将以Workerman作为示例框架,并结合一些代码示例,帮助读者更好地理解和应用这些解决方案。 一、数据库连接问题:在…

      用户投稿 2026年9月22日
      000
    • 基于Workerman构建实时股票交易系统

      基于workerman构建实时股票交易系统 引言:随着互联网技术的飞速发展,越来越多的人参与到股票交易中。在传统的股票交易系统中,实时性和稳定性是最重要的需求之一。为了满足这些需求,我们可以使用PHP的网络编程框架Workerman来构建一个高效、实时的股票交易系统。 一、简介Workerman是一…

      用户投稿 2026年9月22日
      000
    • 使用Workerman构建高性能的视频直播平台

      使用Workerman构建高性能的视频直播平台 摘要:在现代科技的发展下,视频直播成为一种越来越受欢迎的娱乐方式。然而,直播平台需要处理大量的并发连接和高带宽要求,因此需要一个高性能的解决方案。本文将介绍如何使用PHP的网络通信库Workerman来构建一个高性能的视频直播平台。 引言:随着网络带宽…

      2026年9月22日
      200
    • Workerman开发心得分享:构建可扩展的大规模网络应用程序

      Workerman开发心得分享:构建可扩展的大规模网络应用程序 导言:在当今互联网的高速发展中,越来越多的互联网应用需要处理大量并发连接和高负载的情况。为了满足这些需求,开发人员需要选择一种高效可靠的网络通信框架。而Workerman正是一种近年来备受瞩目的网络编程框架,它以其高性能、可扩展性和简单…

      2026年9月22日
      100
    • 使用Workerman实现高性能的在线医疗平台

      使用Workerman实现高性能的在线医疗平台 随着科技的发展,互联网在医疗领域的应用越来越广泛。在线医疗平台为患者和医生提供了一个便捷的沟通渠道,解决了患者就医难、就医贵的问题。为了保证平台的高性能和稳定性,我们可以使用PHP的高性能网络框架Workerman来实现。 Workerman是一种基于…

      2026年9月22日
      000
    • 基于Workerman开发高可用的航空订票系统

      基于Workerman开发高可用的航空订票系统 近年来,随着航空业的快速发展,航空订票系统的重要性与日俱增。一个高效、高可用的航空订票系统可以提供便捷、安全的预订服务,满足旅客和航空公司的需求。 在这篇文章中,我们将介绍如何利用Workerman框架开发一个高可用的航空订票系统。Workerman是…

      2026年9月22日
      100
    • 基于Workerman实现高并发的在线支付系统

      基于Workerman实现高并发的在线支付系统 引言:如今,随着互联网的快速发展,线上支付已经成为大众生活中不可或缺的一部分。为了满足用户日益增长的在线支付需求,开发一款高并发的在线支付系统是至关重要的。本文将介绍如何基于Workerman框架来实现一个高并发的在线支付系统,并提供相应代码示例。 一…

      2026年9月21日
      300
    • 使用Workerman构建高性能的游戏排行榜服务

      使用Workerman构建高性能的游戏排行榜服务 在当今的游戏世界中,游戏排行榜服务是非常重要的功能之一。游戏排行榜不仅能够给玩家提供一个公平竞争的平台,还能够增加游戏的可玩性和互动性。然而,构建一个高性能的游戏排行榜服务并非易事。本文将介绍如何使用Workerman这个高性能PHP框架来构建一个游…

      2026年9月21日
      200

    发表回复

    登录后才能评论
    关注微信