{"id":19936280,"url":"https://github.com/sourcey/symple-server","last_synced_at":"2025-12-17T09:35:59.576Z","repository":{"id":15584104,"uuid":"18319809","full_name":"sourcey/symple-server","owner":"sourcey","description":"Symple real time messaging and presence server using Node.js, Socket.IO and Redis","archived":false,"fork":false,"pushed_at":"2024-05-10T07:44:04.000Z","size":105,"stargazers_count":42,"open_issues_count":1,"forks_count":23,"subscribers_count":11,"default_branch":"master","last_synced_at":"2024-11-05T20:04:48.504Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://sourcey.com/symple/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sourcey.png","metadata":{"files":{"readme":"README.hbs","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-04-01T06:25:04.000Z","updated_at":"2024-05-10T07:44:07.000Z","dependencies_parsed_at":"2022-09-08T01:10:47.843Z","dependency_job_id":null,"html_url":"https://github.com/sourcey/symple-server","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcey%2Fsymple-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcey%2Fsymple-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcey%2Fsymple-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sourcey%2Fsymple-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sourcey","download_url":"https://codeload.github.com/sourcey/symple-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224362121,"owners_count":17298642,"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-11-12T23:24:49.734Z","updated_at":"2025-12-17T09:35:54.520Z","avatar_url":"https://github.com/sourcey.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Symple Server\n\nThe Symple Node.js server is a real time messaging server built on top of `socket.io` and `redis` for creating blazing fast messaging applications quickly and easily. Use cases include chat, sms, media streaming, and games that run in the web browser, desktop, or on mobile devices.\n\n## What is Symple?\n\nSymple is an unrestrictive real time messaging and presence protocol that implements the minimum number of features required to build full fledged messaging applications with security, flexibility, performance and scalability in mind. These features include:\n\n* Session sharing with any backend (via Redis)\n* User rostering and presence\n* Media streaming (via WebRTC, [see demo](http://symple.sourcey.com))\n* Scoped messaging ie. direct, user and group scope\n* Real-time commands and events\n* Real-time forms\n\n## Installation\n\n[Install Redis](http://redis.io/download) Note that Redis is optional, but required if you want to share secure sessions. If you're using Ubuntu just type:\n\n```\nsudo apt-get install redis-server\n```\n\nInstall Symple from npm:\n\n```bash\nnpm install symple\n\n# use the --save flag to automatically add Symple to your package.json dependencies\n# npm install symple --save\n```\n\nDone.\n\n## Usage\n\nTo get started straight away fire up the default server by typing:\n\n```bash\nnode server\n\n# or using npm\n# npm start\n```\n\nThe `server.js` file in the root directory of the repo provides an example of how to include the Symple server in your own code:\n\n```bash\n// include Symple\nvar Symple = require('symple');\n\n// instantiate the Symple server\nvar sy = new Symple();\n\n// load a config file\nsy.loadConfig(__dirname + \"/symple.json\");\n\n// initialize the server\nsy.init();\n\n// access socket.io instance methods if required\n// sy.io.use(function(socket, next) { });\n\n// access HTTP/S server instance methods if required\n// sy.http ...\n\n// access Redis publish/subscribe client instance methods\n// sy.pub ...\n// sy.sub ...\n\nconsole.log('Symple server listening on port ' + sy.config.port);\n```\n\nSee the [configuration options](#configuration) below for a list of available options.\n\nOnce the server is up and running you need a client to connect to it. There are a number of options here in the following languages:\n\n* JavaScript: https://github.com/sourcey/symple-client\n* Ruby: https://github.com/sourcey/symple-client-ruby\n* C++: https://github.com/sourcey/libsourcey/tree/master/src/symple\n\n## Configuration\n\nTo configure the server just modify `symple.json` as needed:\n\n```\n{\n  /*\n    The port to listen on (default: 4500).\n    If `process.env.PORT` is set, the env value will be used instead.\n    Port 443 should always be used for SSL.\n  */\n  \"port\" : 4500,  /* 443 */\n\n  /*\n    Session time-to-live in minutes (default: 15 minutes)\n    This is the duration of time before sessions expire after the client disconnects.\n    If set to `-1` the session will never expire.\n  */\n  \"sessionTTL\" : 15,\n\n  /* Enable or disable authentication */\n  \"authentication\" : true,\n\n  /*\n    Redis configuration\n    Redis must be available if using `authentication = true`\n  */\n  \"redis\" : {\n    \"host\" : \"localhost\",\n    \"port\" : 6379,\n    \"password\" : \"redispwd\"\n  },\n\n  /* SSL configuration */\n  \"ssl\" : {\n    \"enabled\" : false,\n    \"key\" : \"ssl/symple.key\",\n    \"cert\" : \"ssl/symple.crt\"\n  }\n}\n```\n\n## API Reference\n\n{{optionSet \"example-lang\" \"js\" ~}}\n{{\u003emain}}\n\n## Contributing\n\nContributions are always welcome :)\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n\n## Contact\n\nFor more information check out the Symple homepage: http://sourcey.com/symple/\nFor bugs or issues please use the Github issue tracker: https://github.com/sourcey/symple-server-node/issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcey%2Fsymple-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsourcey%2Fsymple-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsourcey%2Fsymple-server/lists"}