ION
ION is a distributed real-time communication system, the goal is to chat anydevice, anytime, anywhere!
Online Docs
Sponsor
(https://opencollective.com/pion-ion)
(https://opencollective.com/pion-ion)
Linux "Ubuntu 16.04.6 LTS" 75.0 (64-bit) Mozilla Firefox for Ubuntu canonical-1.0
I create room with more than one members I expect watching all members streams
In Google Chrome all is Ok. But firefox shows me only LocalStream
There are some errors in developer's console: Warning: This page uses the non standard property “zoom”. Consider using calc() in the relevant property values, or using “transform” along with “transform-origin: 0 0” Warning: onaddstream is deprecated! Use peerConnection.ontrack instead. Error: InvalidAccessError: Answer tried to set recv when offer did not set send
I'am not javascript ninja... I can't explain this behavior
User authentication, internally and/or externally would be great, as meetings are often confidential.
error: The method 'addTransceiver' isn't defined for the class 'RTCPeerConnection'. (undefined_method at [brodacaster] lib/src/client.dart:216)
I just cloned the repo and tried running example on iOS simulator
I expect it to at least build successfully
It gives me error on building and i am unable to install
DEBUG: Recivied data: {"response":true,"id":2462221,"ok":false,"errorCode":500,"errorReason":"Not found any node for islb."}
[VERBOSE-2:ui_dart_state.cc(157)] Unhandled Exception: {code: 500, error: Not found any node for islb.}
I am getting the above error after 2 or 3 days of the server running. To fix this again I have to do docker-compose up.
Expose Biz websocket under a path on web, not a separate port. Switch to standard web ports for http/https. This simplifies prod hosting as only the two common ports must be exposed for the web service.
For local dev the 8443 websocket port is routed directly to the biz container. This port should not be exposed in production / external hosting.
This required some minor client updates. The changes made here will use the host:port combination that the page is currently served on to request the /ws path. A better long term solution would be to provide these as defaults but allow the clients to specify an override url for the biz ws location.
The web dockerfile was reworked to use multistage builds. I grabbed the code from the previous version, before space reduction, and simply updated to use pre-built docker images for node and caddy server. Overall the image size should be similar, but with the benefit of docker layer caching for node builds.
Additionally the Caddyfile was update to version 2.0 to support the versions available from dockerhub. The Caddy files have been split into a local and remote version with http port 8080 for localhost. The docker-compose file has both with remote currently commented out. For prod, port 8080 should not be exposed publicly.
This should fit most cases, but could use some feedback on how people are hosting remote and locally for dev.
Fixes #75
It seems that after an extended period of time sitting idle, the nodes go down. This is the logs i see
biz_1 | 2020-04-03 02:39:23.533 INF handleSFUBroadCast: method=stream-remove, data=map[mid:f6e16f25-1756-450b-83d0-017030fe68ef#BEPCHN]
redis_1 | 1:M 03 Apr 2020 12:41:52.438 * 1 changes in 3600 seconds. Saving...
redis_1 | 1:M 03 Apr 2020 12:41:52.690 * Background saving started by pid 22
redis_1 | 22:C 03 Apr 2020 12:41:52.857 * DB saved on disk
redis_1 | 22:C 03 Apr 2020 12:41:52.864 * RDB: 0 MB of memory used by copy-on-write
redis_1 | 1:M 03 Apr 2020 12:41:52.918 * Background saving terminated with success
biz_1 | 2020-04-03 12:41:52.932 INF DELETE "/dc1/node/islb-EeZD7mgaPPsR":""
islb_1 | 2020-04-03 12:41:53 INF DELETE "/dc1/node/islb-EeZD7mgaPPsR":""
islb_1 | 2020-04-03 12:41:53.011 INF Node [/dc1/node/islb-EeZD7mgaPPsR] Down
islb_1 | 2020-04-03 12:41:53.027 INF DELETE "/dc1/node/sfu-sAWekEXhrOXb":""
islb_1 | 2020-04-03 12:41:53.038 INF Node [/dc1/node/sfu-sAWekEXhrOXb] Down
islb_1 | 2020-04-03 12:41:53.043 INF DELETE "/dc1/node/biz-bV3fgNOqiN7l":""
islb_1 | 2020-04-03 12:41:53.044 INF Node [/dc1/node/biz-bV3fgNOqiN7l] Down
islb_1 | 2020-04-03 12:41:53.044 INF removeStreamsByNode: node => sfu-sAWekEXhrOXb
biz_1 | 2020-04-03 12:41:52.953 INF Node [/dc1/node/islb-EeZD7mgaPPsR] Down
Any ideas why this might be?
I'm seeing an intermittent issue when a users pub seems to die, they stop streaming video/audio, but their subs are still active, so they can see everyone else in the room. When this happens, their stream freezes for everyone else but they can still hear everyone else. It seems to happen more frequently with bad internet (lossy/slow).
I've seen this issue brought up a bit is slack too.
bugRe-opening this so we can move hosting forward. I have seen a few users having trouble hosting, and had quite a time getting it set up myself the first time. These changes represent a fairly standard way of web hosting and I think they are very beneficial to new users.
As I mentioned in the last PR the port change on the clients is intentional in order to use standard web ports (443 in prod) for hosting. If you are having issues with your hosting I would be glad to go through it and work out changes to support it.
I have been hosting using this docker setup for weeks now and have had zero issue. Please update with what issues you are running into so we can get this merged and out to the community.
Simple Python script that uses Selenium and Chromedriver to generate multiple user sessions and stress test the Ion JS Demo code and underlying Docker containers.
Useful to diagnose #135.
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| golang.org/x/crypto | require | digest | 279210d
-> 75b2880
|
:date: Schedule: "on the first day of the month" (UTC).
:vertical_traffic_light: Automerge: Disabled by config. Please merge this manually once you are satisfied.
:recycle: Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
:no_bell: Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by WhiteSource Renovate. View repository job log here.
sfu_1 | 2020-04-07 02:18:30.871 INF rtc.GetOrNewRouter id=02121ce9-7ebb-46fa-9af9-96b321bf03d5#LNPHGT
sfu_1 | 2020-04-07 02:18:30.871 INF rtc.GetRouter id=02121ce9-7ebb-46fa-9af9-96b321bf03d5#LNPHGT
sfu_1 | 2020-04-07 02:18:30.871 INF rtc.AddRouter id=02121ce9-7ebb-46fa-9af9-96b321bf03d5#LNPHGT
sfu_1 | 2020-04-07 02:18:30.871 INF NewRouter id=02121ce9-7ebb-46fa-9af9-96b321bf03d5#LNPHGT
sfu_1 | 2020-04-07 02:18:30.872 INF subscribe tracks=map[eI5U01z2tJlCU1ikLuNVeAFZMp18njodeUMJ 066a306c-c5f5-4b93
-ad09-766dd9383657:[map[id:066a306c-c5f5-4b93-ad09-766dd9383657 pt:111 ssrc:4.273608241e+09 type:audio]] eI5U01z2tJ
lCU1ikLuNVeAFZMp18njodeUMJ e02b1007-9974-4d61-859b-b4d52a39e2ed:[map[id:e02b1007-9974-4d61-859b-b4d52a39e2ed pt:96
ssrc:1.143603203e+09 type:video]]]
sfu_1 | panic: interface conversion: interface {} is nil, not string
sfu_1 |
sfu_1 | goroutine 32 [running]:
sfu_1 | github.com/pion/ion/pkg/node/sfu.subscribe(0xc0003b92f0, 0x9, 0xf2a2c2)
sfu_1 | /go/src/github.com/pion/ion/pkg/node/sfu/internal.go:205 +0x1630
sfu_1 | github.com/pion/ion/pkg/node/sfu.handleRequest.func1(0xc0003b92c0, 0xc0003b93e0, 0xc0003b9410)
sfu_1 | /go/src/github.com/pion/ion/pkg/node/sfu/internal.go:35 +0x2d8
sfu_1 | github.com/cloudwebrtc/nats-protoo.(*NatsProtoo).handleRequest(0xc000173e60, 0xc0003b92c0, 0xc0003ccbc0, 0x14, 0xc0003ccbe0, 0x19)
sfu_1 | /go/pkg/mod/github.com/cloudwebrtc/[email protected]/protoo.go:150 +0x1d4
sfu_1 | github.com/cloudwebrtc/nats-protoo.(*NatsProtoo).handleMessage(0xc000173e60, 0xc0003ce000, 0x16db, 0x16db, 0xc0003ccbc0, 0x14, 0xc0003ccbe0, 0x19)
sfu_1 | /go/pkg/mod/github.com/cloudwebrtc/[email protected]/protoo.go:105 +0x156
sfu_1 | github.com/cloudwebrtc/nats-protoo.(*NatsProtoo).onRequest(0xc000173e60, 0xc0003cac30)
sfu_1 | /go/pkg/mod/github.com/cloudwebrtc/[email protected]/protoo.go:96 +0x198
sfu_1 | github.com/nats-io/nats%2ego.(*Conn).waitForMsgs(0xc0000b7b80, 0xc00016a240)
sfu_1 | /go/pkg/mod/github.com/nats-io/[email protected]/nats.go:2147 +0x330
sfu_1 | created by github.com/nats-io/nats%2ego.(*Conn).subscribe
Seems like it's panicking here because the msg
didn't contain a codec
in the tracks map, line with timestamp 2020-04-07 02:18:30.872
in the stacktrace.
docker-compose up
on a GCP compute engine node.Seeing both users' video tracks.
sfu crashed.
I am trying to bind '0.0.0.0' with my domain name within ion->config->docker->signal.toml file. once I add my domain name or IP address in host="domain_name" I am getting this errors. ion-signal-1 | panic: (*logrus.Entry) 0xc000384230 ion-signal-1 | ion-signal-1 | goroutine 1 [running]: ion-signal-1 | github.com/sirupsen/logrus.(*Entry).log(0xc000384000, 0x0, 0xc000398240, 0x5a) ion-signal-1 | /go/pkg/mod/github.com/sirupsen/[email protected]/entry.go:259 +0x2ba ion-signal-1 | github.com/sirupsen/logrus.(*Entry).Log(0xc000384000, 0x0, 0xc000217950, 0x1, 0x1) ion-signal-1 | /go/pkg/mod/github.com/sirupsen/[email protected]/entry.go:293 +0x86 ion-signal-1 | github.com/sirupsen/logrus.(*Entry).Logf(0xc000384000, 0xc000000000, 0xc1e51c, 0x18, 0xc000217bb8, 0x1, 0x1) ion-signal-1 | /go/pkg/mod/github.com/sirupsen/[email protected]/entry.go:338 +0xe5 ion-signal-1 | github.com/sirupsen/logrus.(*Logger).Logf(0xc0000f5960, 0x0, 0xc1e51c, 0x18, 0xc000217bb8, 0x1, 0x1) ion-signal-1 | /go/pkg/mod/github.com/sirupsen/[email protected]/logger.go:151 +0x95 ion-signal-1 | github.com/sirupsen/logrus.(*Logger).Panicf(...) ion-signal-1 | /go/pkg/mod/github.com/sirupsen/[email protected]/logger.go:192 ion-signal-1 | github.com/pion/ion-log.Panicf(...) ion-signal-1 | /go/pkg/mod/github.com/pion/[email protected]/log.go:72 ion-signal-1 | github.com/pion/ion/pkg/util.(*WrapperedGRPCWebServer).Serve(0xc000366f00, 0xc000366f00, 0x2) ion-signal-1 | /ion/pkg/util/wrapped.go:177 +0xc8d ion-signal-1 | main.main() ion-signal-1 | /ion/cmd/signal/main.go:124 +0x6e8 ion-signal-1 exited with code 2
In the documentation, you use the open command has it was universal, it's not.
Not a big deal, but just wanted to point that it does not work in Linux base distributions and may confuse beginners.
The 'ontrackevent' event is called regardless of the session. Even if users in another session then for all sessions will be called. Is it not sopposed to be called according to session?
rtc.ontrackevent
git clone https://github.com/pion/ion
cd ion
sudo make docker-start-services
/bin/sh: 1: go: not found
docker-compose pull
Pulling nats ... done
Pulling redis ... done
Pulling islb ... done
Pulling app-room ... done
Pulling signal ... done
Pulling sfu ... done
docker network create ionnet
8a6f31d3b875c2a53772b023567d90f66cd2bea939707aa436d867ac553a3fcc
docker-compose -f docker-compose.yml up
Starting ion_redis_1 ... error
Starting ion_nats_1 ...
Starting ion_nats_1 ... done
ERROR: for redis Cannot start service redis: network e3256c5fed9f7e7017135563e5037117082af044028b722ac8c15a451204a831 not found
ERROR: Encountered errors while bringing up the project.
make: *** [Makefile:34: docker-start-services] Error 1
not to see an error
i see error in the terminal:
ERROR: for redis Cannot start service redis: network e3256c5fed9f7e7017135563e5037117082af044028b722ac8c15a451204a831 not found
1、/rtc.RTC/ 这个ws接口是否有心跳接口? 2、/room.RoomSignal/ 这个ws是否有心跳接口?
demo 使用的是 examples\ion-pubsub
nginx.config
location ^~ /room.RoomSignal/ {
#这里需要说明一下,由于docker的网络问题,我们填127.0.0.1是不可行的
#因为127.0.0.1是docker容器内的网络,不是我们宿主机的网络,所以就不能指向正确的路径
#我们需要填内网的ip地址例如:192.168.1.222,这样才是可以行的
proxy_redirect off;
proxy_pass http://172.25.158.83:5551/room.RoomSignal/; # 转发
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # 升级协议头
proxy_set_header Connection upgrade;
}
#截取url开头匹配/rtc.RTC/,然后转发到http://172.25.158.83:5551/rtc.RTC/
location ^~ /rtc.RTC/ {
#这里需要说明一下,由于docker的网络问题,我们填127.0.0.1是不可行的
#因为127.0.0.1是docker容器内的网络,不是我们宿主机的网络,所以就不能指向正确的路径
#我们需要填内网的ip地址例如:192.168.1.222,这样才是可以行的
proxy_redirect off;
proxy_pass http://172.25.158.83:5551/rtc.RTC/; # 转发
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # 升级协议头
proxy_set_header Connection upgrade;
}
location /ion-pubsub/ {
#这里需要说明一下,由于docker的网络问题,我们填127.0.0.1是不可行的
#因为127.0.0.1是docker容器内的网络,不是我们宿主机的网络,所以就不能指向正确的路径
#我们需要填内网的ip地址例如:192.168.1.222,这样才是可以行的
# proxy_pass http://172.16.99.219:8080;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # 升级协议头
proxy_set_header Connection upgrade;
#项目添加到容器,这是容器的路径
root /usr/local/docker/ion/ion/examples/;
index index.html;
}
v1.9 last version
Source code(tar.gz)new archteche
Source code(tar.gz)chore(deps): update ion-sdk-js to v1.5.3 fix: improve a few code feat: add example for signing/validating token feat(biz): improve room managing fix(biz): delete peer when joining failed. fix(islb): check that redis be created feat: islb load balancing fix: async handling messages fix(log): correct logs feat: sfu send message to biz/avp chore(deps): update helm chart etcd to v5.3.0 (#443) … feat: modularize fix(ci): remove travis
Source code(tar.gz)feat: peer leave when ice connection failed/closed fix(biz): send peer-list to client when joining fix(biz): watch running islb nodes fix(sfu): improve logs chore(deps): update ion-sdk-js to v1.5.1 chore(docker): rename image ci(workflow): rename docker name, fix docker push denied.
Source code(tar.gz)chore(deps): update module pion/ion-avp to v1.5.1 (#438) chore(deps): update module pion/ion-sfu to v1.5.1 (#437) ci(workflow): add lint,build,docker jobs
Source code(tar.gz)This is a new version based on ion-sfu v1.5.0 and ion-avp v1.5.0.
Source code(tar.gz)Flutter Math Math equation rendering in pure Dart & Flutter. This project aims to achieve maximum compatibility and fidelity with regard to the KaTeX
A discord bot, made with Dart, which lets you run your own pure Dart code snippets directly via a discord ping, and get the output in an instant.
Flutter Short Videos Platform Short videos platform with Flutter and Firebase. About Real short video app with firebase and pixels API.Where you can c
figma A library for interacting with Figma APIs. Created from templates made available by Stagehand under a BSD-style license. Usage A simple usage ex
Create a serverless Discord bot in pure dart using Discord Interactions webhooks Features Feature Status Manage Application Commands Full support (uni
chat_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this
Moving Pictures Moving Pictures is a mobile application built with the Flutter SDK for Android and iOS. It’s an application that gets the information
Easily scan your documents on the go with Paper. Scan those documents at ease with real-time document detection, multi paged pdfs, optimized and cleaner clicks from an easy to navigate UX
beatiful_timelines Beautiful timelines built with Flutter and timeline_tile. Current examples: Timeline Showcase Football Timeline Activity Timeline S
Internet das coisas Monitoramento de reservatório de água em tempo real Projeto Este aplicativo foi desenvolvido em Flutter. Telas do projeto ESP32 Pa
Covid 19 News This is a mobile app created using Flutter, corona.lmao.ninja (Real Time News about Covid 19). There are some test files that needed to
fpsviewer A Real-time Fps Tool for Android, 一个能实时显示fps,一段时间的平均帧率,以及帧率范围占比,并能获取卡顿堆栈的可视化工具。侵入性低,通过在异步线程采样获取堆栈,无代码侵入,性能消耗可忽略,对性能监控项的异常数据进行采集和分析,整理输出展示相应的
cryptonight A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if t
Dufuna Real estate listing app Run Locally Clone the project
A real-time weather app Demo What I learned from this project How to use Dart to perform asynchronous tasks. Understand async and await.
system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify
ProjectX Music A Music Recommendation System made using Flutter and backed by FastAPI. Introduction ProjectX Music is an online mobile application tha
Plant Monitor IoT based plant monitoring system which is connected to MongoDB. T
Sunrise An automated blinds system using Raspberry PI controlled by an UI-friendly mobile application. This product will help the user be more comfort