yii2-wschat 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
yii2-wschat 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
yii2-wschat 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT License
开发语言 PHP
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 首席测试
适用人群 未知
收录时间 2021-12-02

软件简介

Web Socket Chat

Online chat based on web sockets and ratchet php

Latest Stable Version Scrutinizer Code Quality Total Downloads License Join the chat at https://gitter.im/joni-jones/yii2-wschat

![Demo] (doc/demo.gif)

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist joni-jones/yii2-wschat

or add

"joni-jones/yii2-wschat": "*"

to the require section of your composer.json file.

Usage

  1. The chat extension can use any database storage supported by yii.

    If mongodb extension specified the chat will be try to use it as message history storage, otherwise extension will be use specified in application config db component.

    The simple example how to use mongodb storage is listed below. Install MongoDB and yii2-mongodb extension to store messages history and you need just specify connection in console config:

    'components' => [
        'mongodb' => [
            'class' => '\yii\mongodb\Connection',
            'dsn' => 'mongodb://username:password@localhost:27017/dbname'
        ]
    ]

    In created mongodb database you need to create collection named as history;

    IMPORTANT: if you use db component - you need to create table history in your database. The simple examples postgresql and mysql you can see in tests/codeception directory.

  2. To start chat server need to create console command and setup it as demon:

    • Create controller which extends yii\console\Controller:

      ServerController extends \yii\console\Controller
    • Create action to start server:

      namespace app\commands;
      
      use jones\wschat\components\Chat;
      use jones\wschat\components\ChatManager;
      use Ratchet\Server\IoServer;
      use Ratchet\Http\HttpServer;
      use Ratchet\WebSocket\WsServer;
      
      class ServerController extends \yii\console\Controller
      {
          public function actionRun()
          {
              $server = IoServer::factory(new HttpServer(new WsServer(new Chat(new ChatManager()))), 8080);
              $server->run();
          }
      }

    If you want to use chat for auth users, you must to specify userClassName property for ChatManager instance. For example:

        $manager = Yii::configure(new ChatManager(), [
            'userClassName' => '\yii\db\ActiveRecord' //allow to get users from MySQL or PostgreSQL
        ]);
    • Now, you can run chat server with yii console command:

      yii server/run
  3. To add chat on page just call:

    <?php echo ChatWidget::widget();?>

    or if you want to use chat for auth users just add config as parameter:

    <?php echo ChatWidget::widget([
        'auth' => true,
        'user_id' => '' // setup id of current logged user
    ]);?>
     List of available options:
     auth - boolean, default: false
     user_id - mixed, default: null
     port - integer, default: 8080
     chatList - array (allow to set list of preloaded chats), default: [
         id => 1,
         title => 'All'
     ],
     add_room - boolean, default: true (allow to user create new chat rooms)
    

You can also store added chat, just specify js callback for vent events:

Chat.vent('chat:add', function(chatModel) {
    console.log(chatModel);
});

This code snipped may be added in your code, but after chat widget loading. In the callback you will get access to Chat.Models.ChatRoom backbone model. Now, you need add your code to save chat room instead console.log().

If YII_DEBUG is enabled - all js scripts will be loaded separately.

Also by default chat will try to load two images: /avatar_16.png and /avatar_32.png from assets folder.

Possible issues

If you don't see any messages in console log, check flushInterval and exportInterval of your log configuration component. The simple configuration may looks like this:

'log' => [
    'traceLevel' => YII_DEBUG ? 3 : 0,
    'flushInterval' => 1,
    'targets' => [
        [
            'class' => 'yii\log\FileTarget',
            'levels' => ['error', 'warning', 'info'],
            'logVars' => [],
            'exportInterval' => 1
        ],
    ],
],

If you use https protocol chat will try to connect to wss instead ws. But Ratchet PHP does not support work via SSL, so you need to use some proxy like stunnel.

License

MIT

展开阅读全文

代码

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
Sensio Labs Symfony安全绕过漏洞
Sensio Labs Symfony是法国Sensio Labs公司的一套免费的、基于MVC架构的PHP开发框架。该框架提供常用的功能组件及工具,可用于快速创建复杂的WEB程序。 Sensio Labs Symfony中的Http Foundation存在安全绕过漏洞,攻击者可通过提交特制的‘X-Original-URL’或‘X-Rewrite-URL’HTTP包头值利用该漏洞绕过安全限制,执行未授权的限制。
CVE-2018-14773 MPS-2018-10832
2022-08-08 20:38
Yii SQL注入漏洞
SQL注入
Yii是Yii团队开发的一套基于组件、用于开发大型Web应用的高性能PHP框架。 Yii 2.0.15之前的2.x版本中的framework/db/ActiveRecord.php文件的‘findByCondition’函数存在SQL注入漏洞。远程攻击者可借助‘findOne()’或‘findAll()’函数的调用利用该漏洞执行任意的SQL命令或绕过访问检测方法。
CVE-2018-7269 MPS-2018-3472
2022-08-08 20:38
Sensio Labs Symfony HttpFoundation组件安全漏洞
不充分的会话过期机制
Sensio Labs Symfony是法国Sensio Labs公司的一套免费的、基于MVC架构的PHP开发框架,它提供常用的功能组件及工具,可用于快速创建复杂的WEB程序。HttpFoundation是其中的一个针对HTTP协议定义面向对象层的组件。 Sensio Labs Symfony中的HttpFoundation组件存在安全漏洞。攻击者可借助特制的载荷利用该漏洞在Symfony应用程序上造成拒绝服务(无限循环)。以下版本受到影响:Symfony 2.7.48之前的2.7.x版本,2.8.41之前的2.8.x版本,3.3.17之前的3.3.x版本,3.4.11之前的3.4.x版本,4.0.11之前的4.0.x版本。
CVE-2018-11386 MPS-2018-7896
2022-08-08 20:38
Yii 安全漏洞
源验证错误
Yii是Yii团队开发的一套基于组件、用于开发大型Web应用的高性能PHP框架。 Yii 2.x版本至2.0.15.1版本中存在安全漏洞。目前尚无此漏洞的相关信息,请随时关注CNNVD或厂商公告。
CVE-2018-20745 MPS-2019-1104
2022-08-08 20:38
Yii 代码问题漏洞
反序列化
Yii是Yii团队的Yii是Yii团队开发的一套基于组件、用于开发大型Web应用的高性能PHP框架。 Yii2,2.0.38之前版本中存在代码问题漏洞。该漏洞源于网络系统或产品的代码开发过程中存在设计或实现不当的问题。
CVE-2020-15148 MPS-2020-12991
2022-08-08 20:38
yii2 安全特征问题漏洞
使用不充分的随机数
yii2是一个快速、安全和专业的PHP框架。 yii2存在安全漏洞,该漏洞源于yii2易受随机数生成器中可预测算法的影响
CVE-2021-3689 MPS-2021-16549
2022-08-08 20:38
yii2 安全特征问题漏洞
使用不充分的随机数
yii2是一个快速、安全和专业的PHP框架。 yii2存在安全漏洞,该漏洞源于yii2易受随机数生成器中可预测算法的影响
CVE-2021-3692 MPS-2021-16552
2022-08-08 20:38
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
0 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部