{"id":13453484,"url":"https://github.com/kryoz/sociochat","last_synced_at":"2025-03-24T01:31:32.864Z","repository":{"id":15781898,"uuid":"18521023","full_name":"kryoz/sociochat","owner":"kryoz","description":"A chat based on WebSockets/ReactPHP","archived":true,"fork":false,"pushed_at":"2017-03-31T17:18:25.000Z","size":1892,"stargazers_count":69,"open_issues_count":0,"forks_count":18,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-10-28T20:38:39.655Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kryoz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-07T14:55:41.000Z","updated_at":"2024-06-11T11:43:21.000Z","dependencies_parsed_at":"2022-08-25T14:31:37.963Z","dependency_job_id":null,"html_url":"https://github.com/kryoz/sociochat","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryoz%2Fsociochat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryoz%2Fsociochat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryoz%2Fsociochat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryoz%2Fsociochat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kryoz","download_url":"https://codeload.github.com/kryoz/sociochat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245194243,"owners_count":20575727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T08:00:40.910Z","updated_at":"2025-03-24T01:31:31.399Z","avatar_url":"https://github.com/kryoz.png","language":"PHP","readme":"SocioChat\n=========\n\nThis is source code of  \u003ca href=\"https://sociochat.ru\" target=\"_blank\"\u003eSocioChat\u003c/a\u003e.\nThe code is a bit rough in some places, lacking of tests, but pretty readable and managable.\n\nSocioChat is licensed under the Apache Licence, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).\n\n## The story\n\nIn the beginning of 2014 I was reading an article about ReactPHP and Ratchet. It looked really attractive and promising stack. At the same time I stumbled upon a yet another chat roulette. It was utilizing socionic theory about 16 types of information metabolizm (very close to MBTI) but appeared very buggy. It had all signs of poor code quality even without source code exposed. So if I decided to join that project it would result a complete rewrite. That's why SocioChat appeared as an alternative.\n\nAt first it had closed source code but one day I realized that it's really stupid to hide this work. Because maybe one day I'll exit the project and it will die without any useful contribution to society. \nSo now thanks to that decision and GitHub, of course, you have an opportunity to learn something new and even influence to make the project better.\n\n## Features\n\n* Very fast and full async websocket handling\n* Adaptive markup via Twitter Bootstrap 3\n* UI optimized to use with mobile devices\n* HTML5 Notifications\n* Silex framework (for typical web request handling)\n* Partial multilanguage\n* The concept \"chat first - register later\"\n* Private chatting and personal banning\n* Seamless reconnect on interruption of connection\n* Flood protection\n* Avatars\n* Music player\n* Rude filter\n* Message history dumps to memcache \n\n## Installation\n\n* At least PHP 5.5\n* MySQL or PostgreSQL. Use `phinx` utility to apply migrations.\n* Memcache \n* Give write permissions to `www/uploads/avatars`\n* PECL extension 'libevent' is recommended to achieve the best speed\n```bash\nsudo apt-get install libevent-dev\nsudo pecl install libevent\n```\nDon't forget to enable this extension in php-cli\n* Get composer and do in project root\n```bash\n$ php composer.phar update\n```\nto get all necessary libraries\n* Configure web server (nginx/apache) for project host and edit \u003cem\u003econf/local.ini\u003c/em\u003e. This file overrides settings from default.ini. For example\n```ini\ndb.name = chat\ndb.pass = 111\ndb.user = chat\ndb.scheme = pgsql\ndb.host = localhost\n\nsession.lifetime = 3600\nsession.timeout = 10\nfloodTimeout = 1\ninviteTimeout = 10\n\nlogger =\n\ndomain.web = chat\ndomain.ws = ws://chat:8080\ndomain.protocol = http://\n\nmetrika = 0\n```\n* Run from project root with command for development purpose\n```bash\nphp bin/chat-server.php\n```\nTo start in daemon mode use\n```bash\nnohup php bin/chat-server.php \u0026\n```\n\nSee also `nginx.conf` \n","funding_links":[],"categories":["PHP"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkryoz%2Fsociochat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkryoz%2Fsociochat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkryoz%2Fsociochat/lists"}