##// END OF EJS Templates
Show More
Commit message Age Author Refs
r480:08d274ac
build(deps): bump json5, imports-loader, babel-loader, copy-webpack-plugin, exports-loader, html-webpack-plugin, webpack and webpack-cli Bumps [json5](https://github.com/json5/json5) to 2.2.3 and updates ancestor dependencies [json5](https://github.com/json5/json5), [imports-loader](https://github.com/webpack-contrib/imports-loader), [babel-loader](https://github.com/babel/babel-loader), [copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin), [exports-loader](https://github.com/webpack-contrib/exports-loader), [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin), [webpack](https://github.com/webpack/webpack) and [webpack-cli](https://github.com/webpack/webpack-cli). These dependencies need to be updated together. Updates `json5` from 2.1.1 to 2.2.3 - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.1.1...v2.2.3) Updates `imports-loader` from 0.8.0 to 4.0.1 - [Release notes](https://github.com/webpack-contrib/imports-loader/releases) - [Changelog](https://github.com/webpack-contrib/imports-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/imports-loader/compare/v0.8.0...v4.0.1) Updates `babel-loader` from 8.0.6 to 8.3.0 - [Release notes](https://github.com/babel/babel-loader/releases) - [Changelog](https://github.com/babel/babel-loader/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel-loader/compare/v8.0.6...v8.3.0) Updates `copy-webpack-plugin` from 5.1.1 to 11.0.0 - [Release notes](https://github.com/webpack-contrib/copy-webpack-plugin/releases) - [Changelog](https://github.com/webpack-contrib/copy-webpack-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/copy-webpack-plugin/compare/v5.1.1...v11.0.0) Updates `exports-loader` from 0.7.0 to 4.0.0 - [Release notes](https://github.com/webpack-contrib/exports-loader/releases) - [Changelog](https://github.com/webpack-contrib/exports-loader/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack-contrib/exports-loader/compare/v0.7.0...v4.0.0) Updates `html-webpack-plugin` from 3.2.0 to 5.5.0 - [Release notes](https://github.com/jantimon/html-webpack-plugin/releases) - [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v3.2.0...v5.5.0) Updates `webpack` from 4.41.6 to 5.75.0 - [Release notes](https://github.com/webpack/webpack/releases) - [Commits](https://github.com/webpack/webpack/compare/v4.41.6...v5.75.0) Updates `webpack-cli` from 3.3.11 to 5.0.1 - [Release notes](https://github.com/webpack/webpack-cli/releases) - [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-cli/compare/v3.3.11...webpack-cli@5.0.1) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect - dependency-name: imports-loader dependency-type: direct:production - dependency-name: babel-loader dependency-type: direct:development - dependency-name: copy-webpack-plugin dependency-type: direct:development - dependency-name: exports-loader dependency-type: direct:development - dependency-name: html-webpack-plugin dependency-type: direct:development - dependency-name: webpack dependency-type: direct:development - dependency-name: webpack-cli dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
0
r479:3c9392f5
build(deps): bump express from 4.17.1 to 4.18.2 in /frontend Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.18.2. - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.17.1...4.18.2) --- updated-dependencies: - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
0
r478:844302d3
build(deps): bump certifi from 2019.11.28 to 2022.12.7 Bumps [certifi](https://github.com/certifi/python-certifi) from 2019.11.28 to 2022.12.7. - [Release notes](https://github.com/certifi/python-certifi/releases) - [Commits](https://github.com/certifi/python-certifi/compare/2019.11.28...2022.12.07) --- updated-dependencies: - dependency-name: certifi dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
0
r477:3256dfa4
build(deps): bump qs and express in /frontend Bumps [qs](https://github.com/ljharb/qs) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together. Updates `qs` from 6.7.0 to 6.11.0 - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.7.0...v6.11.0) Updates `express` from 4.17.1 to 4.18.2 - [Release notes](https://github.com/expressjs/express/releases) - [Changelog](https://github.com/expressjs/express/blob/master/History.md) - [Commits](https://github.com/expressjs/express/compare/4.17.1...4.18.2) --- updated-dependencies: - dependency-name: qs dependency-type: indirect - dependency-name: express dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
0
r476:65aacb5d
build(deps): bump decode-uri-component from 0.2.0 to 0.2.2 in /frontend Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
2
r475:a1b8d396
build(deps): bump loader-utils, html-webpack-plugin and webpack-cli Bumps [loader-utils](https://github.com/webpack/loader-utils) to 1.4.2 and updates ancestor dependencies [loader-utils](https://github.com/webpack/loader-utils), [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) and [webpack-cli](https://github.com/webpack/webpack-cli). These dependencies need to be updated together. Updates `loader-utils` from 1.2.3 to 1.4.2 - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v1.2.3...v1.4.2) Updates `html-webpack-plugin` from 3.2.0 to 5.5.0 - [Release notes](https://github.com/jantimon/html-webpack-plugin/releases) - [Changelog](https://github.com/jantimon/html-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/jantimon/html-webpack-plugin/compare/v3.2.0...v5.5.0) Updates `webpack-cli` from 3.3.11 to 3.3.12 - [Release notes](https://github.com/webpack/webpack-cli/releases) - [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack-cli/compare/v3.3.11...v3.3.12) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect - dependency-name: html-webpack-plugin dependency-type: direct:development - dependency-name: webpack-cli dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
0
r474:c886aaa0
build(deps): bump urllib3 from 1.25.8 to 1.26.5 Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.25.8 to 1.26.5. - [Release notes](https://github.com/urllib3/urllib3/releases) - [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst) - [Commits](https://github.com/urllib3/urllib3/compare/1.25.8...1.26.5) --- updated-dependencies: - dependency-name: urllib3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
0
r473:40b3c02f
build(deps): bump pyyaml from 5.3 to 5.4 Bumps [pyyaml](https://github.com/yaml/pyyaml) from 5.3 to 5.4. - [Release notes](https://github.com/yaml/pyyaml/releases) - [Changelog](https://github.com/yaml/pyyaml/blob/master/CHANGES) - [Commits](https://github.com/yaml/pyyaml/compare/5.3...5.4) Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
0
r472:e1577193
build(deps): bump jinja2 from 2.11.1 to 2.11.3 Bumps [jinja2](https://github.com/pallets/jinja) from 2.11.1 to 2.11.3. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/2.11.1...2.11.3) Signed-off-by: dependabot[bot] <support@github.com>
dependabot[bot]
9
r471:73434adc
setup.py: bump pyramid_apispec
0
< 1 2 3 4 5 6 7 .. 49 >

Channelstream

Build Status

This is a websocket-based real-time communication server,
your applications communicate with it via simple JSON REST API.

Visit http://channelstream.org for more information.

Installation and Setup

Use from docker:

docker pull channelstream/channelstream:latest
docker run --rm -p 8000:8000 -e CHANNELSTREAM_ALLOW_POSTING_FROM=0.0.0.0 channelstream/channelstream:latest

Direct usage

Obtain source from github and do:

YOUR_PYTHON_ENV/bin/pip install channelstream

Generate new configuration:

YOUR_PYTHON_ENV/bin/channelstream_utils make_config -o config.ini

Start the server:

YOUR_PYTHON_ENV/bin/channelstream -i config.ini

Demos

Demo applications live in https://github.com/Channelstream/channelstream_demos repository.

They show common patterns used in real-time applications.

Security and communication model

Channelstream provides API explorer that you can use to interact with various
endpoints, it is available by default under http://127.0.0.1:8000/api-explorer.

To send information client interacts only with your normal www application.
Your app handled authentication and processing messages from client, then passed
them as signed message to channelstream server for broadcast.

websocket client -> webapp (security and transformation happens here) -> REST call to socket server -> broadcast to other clients

This model is easy to implement, secure, easy to scale and allows all kind of
languages/apps/work queues to interact with socket server.

All messages need to be signed with a HMAC of destination endpoint ::

import requests
from itsdangerous import TimestampSigner
signer = TimestampSigner(SERVER_SECRET)
sig_for_server = signer.sign('/connect')
secret_headers = {'x-channelstream-secret': sig_for_server,
                  'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(payload),
                         headers=secret_headers).json()

Data format and endpoints

Please consult API Explorer (http://127.0.0.1:8000/api-explorer) for in depth information
about endpoints.

Some examples:

  • /connect POST connects users to the server
  • /subscribe POST Subscribes connection to new channels
  • /unsubscribe POST Removes connection from channels
  • /user_state POST set the state of specific user
  • /message POST Send message to channels and/or users
  • /message DELETE Delete message from history and emit changes
  • /message PATCH Edit existing message in history and emit changes
  • /channel_config POST Set channel configuration
  • /info POST Returns channel information

Client API

  • /ws GET Handles websocket connections
  • /listen GET Handles long polling connections
  • /disconnect GET Permanently remove connection from server
  • /disconnect POST Permanently remove connection from server

Admin API

  • /admin/admin.json GET Return server information in json format for admin panel purposes
  • /admin/admin.json POST Return server information in json format for admin panel purposes

Responses to js client

Responses to client are in form of list containing objects:

examples:

new message ::

{
"date": "2011-09-15T11:36:18.471862",
"message": MSG_PAYLOAD,
"type": "message",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}

presence info ::

{
"date": "2011-09-15T11:43:47.434905",
"message": {"action":"joined/parted"},
"type": "presence",
"user": "NAME_OF_POSTER",
"channel": "CHAN_NAME"
}

Currently following message types are emited: message, message:edit,
message:delete, presence, user_state_change.