Giter Club home page Giter Club logo

palava's Introduction

palava.tv

palava.tv is a cost-free, simple to use, secure, and open source platform for video calls, built on top of the WebRTC technology.

Bug Reports and Feature Requests

Please use this repository's issue system to notify us about bugs you encounter when using palava.tv: https://github.com/palavatv/palava/issues/new/choose

The palava.tv Stack

The three main ingredients of palava.tv are the following:

Project Description
signaltower* The websocket endpoint which manages the meeting rooms, implemented in Elixir
palava-web The Vue.js application that lets you access palava.tv
palava-client The JavaScript library which communicates with the signaltower

*) The older Ruby-based palava-machine is still available and functions as a drop-in replacement for the signaltower

Setup your own palava.tv

Detailed instructions will follow soon. You can find an example nginx config file here.

palava's People

Contributors

janlelis avatar kopierkatze avatar thammi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

palava's Issues

Datachannels

Issue by thammi
Thursday Sep 04, 2014 at 19:43 GMT
Originally opened as palavatv/palava-client#9


I started a branch with DataChannel support. I am not sure whether the API is the best approach.

To create a session with one TCP-like DataChannel with the label chat do something like this:

session = new palava.Session
  roomId: room
  channel: channel
  dataChannels: {"chat": {ordered: true}}

session.on 'peer_channel_ready', (peer, name, channel) ->
  if name == 'chat'
    channel.on 'message', (data) ->
      console.log "Incoming chat message:", data

    channel.on 'close', () ->
      console.log "DataChannel closed"

    chat.send "Hello World!"

The configuration could also be moved to Session.init().


thammi included the following code: https://github.com/palavatv/palava-client/pull/9/commits

Renegotiation

To be able to add streams after the peer connection is already established, we need to add renegotiation: https://blog.mozilla.org/webrtc/perfect-negotiation-in-webrtc/

For example, this is the precondition to be able to turn on screen sharing during a conversation because the screen sharing stream needs to be added to the peer connection when the user starts it.

Automated testing of browser compatibility

Issue by farao
Sunday Jan 19, 2014 at 23:50 GMT
Originally opened as palavatv/palava-client#4


When having implemented a good way to check the state of a peer connection (see palavatv/palava-client#3), it would be nice to have a setup to automatically run connection tests with all possible browser combinations (at time of writing the current opera and several versions of firefox and chrome).

If I understood it right, this could be done using Selenium (http://docs.seleniumhq.org/).

palava.tv kicks connection after a minute (includes a work around)

Hi there,

a local signaltower installation as well as the central palava.tv server kicks all clients after a minute. Maybe related to issue #26 (look for the wscat example). On client side I've used firefox on win, linux, mac, seems chrome has some issues too nowadays.

If I send artificial traffic to the web socket every 30 seconds with wscat the session will survive on palava.tv as well on my local installation!

Example for palava.tv site, room testxyz123, bash cli:

while true; do wscat -c wss://machine.palava.tv -x '{"event":"join_room","room_id":"testxyz123","status":{"user_agent":"chrome"}}';echo;echo;date; sleep 30;done;

Is this an issue with signaltower (is there a configuration option?) or a new default for the browsers or just a deprecated js-api on client side?
Maybe it's easy to fix palava-client to send a ping from time to time.

btw: thanks a lot for palava - I've used the (now deprecated) docker container for years!

Andreas

Screensharing

Issue by zealot128
Tuesday Mar 11, 2014 at 21:33 GMT
Originally opened as palavatv/palava-portal#10


needs work:

  • Only works in Chrome with debug flags so far. Needs explanation/feature detection
    chrome flags enable & restart: chrome://flags/#enable-usermedia-screen-capture
  • Extraction of config parameters to controller?
  • Didnt tested the getUserMediaTitles, where is it used?

Nice to have:

  • Switching while already running a chat - pass a new stream
  • Audio & Screensharing for talks

/cc @jnauber


zealot128 included the following code: https://github.com/palavatv/palava-portal/pull/10/commits

Add Firefox 44.0.2 to supported browsers

I have the latest Firefox (44.0.2) installed, but https://palava.tv is warning me that me browser is not supported and i should install Mozilla Firefox 22 or above.
I think this requirement is clearly fulfilled and i assume this is an error in the code ;-)

Multiple TURN servers

Is your feature request related to a problem? Please describe.
A single TURN server has limited band-width

Describe the solution you'd like
A way to configure multiple TURN servers (might be done via the signaling protocol)

Additional context
Will be implemented after initial TURN implementation

CommonJS/npm/browserify

Issue by thammi
Thursday Sep 04, 2014 at 20:02 GMT
Originally opened as palavatv/palava-client#10


Makes the library loadable as CommonJS module/package. This adds support for npm/browserify and their require() functions.

I had to add palava = @palava to the top of most files and $ = @$ to the top of most files because we were depending on this being the global namespace (as a result of the way sprockets implements #= require).

Additionally there is now module.coffee which tries to load JQuery and EventEmitter with require() if they are not in the global namespace and exports the palava namespace.


thammi included the following code: https://github.com/palavatv/palava-client/pull/10/commits

What has to be opened on server's firewall?

I deployed palava to a test server and it somehow work, but connections get lost.
Now I see that the firewall on the server blocks udp packets.
Are there any patterns what I should allow regarding tcp or do I have to allow udp in general?

I think this aspect would also be nice to have some documentation on. (I didn't find any ....)
Cheers and keep up the great work!
Stefan

"Un"mirror Preview

Is your feature request related to a problem? Please describe.
When using the rear-side camera of a smartphone or streaming from a Linux loopback video device the preview video should not be mirrored.

Describe the solution you'd like
Potentially add a button to "un"mirror the preview :)
Maybe there is also an idiomatic way to find a good default for a video source (front-facing or not).

Describe alternatives you've considered
I tried not to watch the preview.

Additional context
The same thing will be needed for screen sharing #17

Resolve WebRTC API deprecation warnings

Firefox 65 shows the following WebRTC API deprecation warnings:

  • RTCIceServer.url is deprecated! Use urls instead.
  • onaddstream is deprecated! Use peerConnection.ontrack instead.
  • RTCPeerConnection.getLocalStreams/getRemoteStreams should not be used anymore. Use RTCPeerConnection.getSenders/getReceivers instead

Inform about more stats and connection errors

Issue by farao
Sunday Jan 19, 2014 at 23:45 GMT
Originally opened as palavatv/palava-client#3


In order to tell the user why a connection to a peer could not be established, more information sources need to be watched. The main one will probably be the getStats() function of the PeerConnection object.

It needs to be figured out which browsers support getStats and to which extent and which other webrtc-function can help with getting the state of a connection (e.g. as workarounds when getStats is not or not entirely supported).

Make Redis Server configurable via environment variable

Issue by wendelb
Saturday Aug 09, 2014 at 13:58 GMT
Originally opened as palavatv/palava-machine#6


On environments where the redis server runs on a different machine/ip than localhost (e.g. Docker), palava-machine fails to start. It is unable to connect to the Redis server.

This PR adds the option to define the correct connection data via the environment varibale PALAVA_REDIS.

The new option is documented in README.md.


wendelb included the following code: https://github.com/palavatv/palava-machine/pull/6/commits

Palavatv works in local lan, but not in internet

Issue by VosaXalo
Saturday Jan 25, 2014 at 12:52 GMT
Originally opened as palavatv/palava-client#5


I have tried palava.tv with two PC that are identical:

  • OS: Ubuntu 12.04 64bit
  • Browser: Chromium version 31

The first time the two PC were connected on the same network. I mean that the two PC were connected to the same router, in other words on the same local network. In this case the audio and video conference has worked perfectly.

The second time the two PC were connected to the internet with two distant routers (as is the common situation between users on the net). In this case I can't see the other person, but only a black rectangle, or a rectangle with a black dot in the middle. The video doesn't work, nor the audio.
It seems that something is wrong with the routers?, the firewalls?, router ports? It's strange as palavatv it'a a web page.

If this can help I have copied and pasted here some console messages from the browser during the second test (the two PC connected to different routers):
DEBUG
Arguments[1]
all-767cd71c.js:27
DEBUG
Arguments[2]
all-767cd71c.js:27
DEBUG
Arguments[2]
all-767cd71c.js:27
event.returnValue is deprecated. Please use the standard event.preventDefault() instead. jquery.min.js:16
DEBUG
["peer stream removed", RemotePeer]
all-767cd71c.js:27
DEBUG
["peer left", RemotePeer]
all-767cd71c.js:27
DEBUG
["peer joined", RemotePeer]
0: "peer joined"
1: RemotePeer
$$hashKey: "00G"
_events: Object
distributor: Object
getStream: function (){ return fn.apply(me, arguments); }
hasAudio: function (){ return fn.apply(me, arguments); }
id: "0c4deab7-3616-4598-ab34-a7f8a2dead68"
isLocal: function (){ return fn.apply(me, arguments); }
isMuted: function (){ return fn.apply(me, arguments); }
isReady: function (){ return fn.apply(me, arguments); }
joinTime: 1390140408573
local: false
mozillaCheckAddStream: function (){ return fn.apply(me, arguments); }
muted: false
oaError: function (){ return fn.apply(me, arguments); }
peerConnection: RTCPeerConnection
ready: true
remoteStream: MediaStream
room: Room
sdpSender: function (){ return fn.apply(me, arguments); }
sendAnswer: function (){ return fn.apply(me, arguments); }
sendOffer: function (){ return fn.apply(me, arguments); }
sendOfferIf: function (){ return fn.apply(me, arguments); }
setupDistributor: function (){ return fn.apply(me, arguments); }
setupPeerConnection: function (){ return fn.apply(me, arguments); }
setupRoom: function (){ return fn.apply(me, arguments); }
status: Object
toggleMute: function (){ return fn.apply(me, arguments); }
proto: ctor
callee: function (){return t.log("DEBUG",arguments)}
length: 2
proto: Object
all-767cd71c.js:27
DEBUG
["peer stream ready", RemotePeer]
0: "peer stream ready"
1: RemotePeer
$$hashKey: "00G"
_events: Object
distributor: Object
getStream: function (){ return fn.apply(me, arguments); }
hasAudio: function (){ return fn.apply(me, arguments); }
id: "0c4deab7-3616-4598-ab34-a7f8a2dead68"
isLocal: function (){ return fn.apply(me, arguments); }
isMuted: function (){ return fn.apply(me, arguments); }
isReady: function (){ return fn.apply(me, arguments); }
joinTime: 1390140408573
local: false
mozillaCheckAddStream: function (){ return fn.apply(me, arguments); }
muted: false
oaError: function (){ return fn.apply(me, arguments); }
peerConnection: RTCPeerConnection
ready: true
remoteStream: MediaStream
room: Room
sdpSender: function (){ return fn.apply(me, arguments); }
sendAnswer: function (){ return fn.apply(me, arguments); }
sendOffer: function (){ return fn.apply(me, arguments); }
sendOfferIf: function (){ return fn.apply(me, arguments); }
setupDistributor: function (){ return fn.apply(me, arguments); }
setupPeerConnection: function (){ return fn.apply(me, arguments); }
setupRoom: function (){ return fn.apply(me, arguments); }
status: Object
toggleMute: function (){ return fn.apply(me, arguments); }
proto: ctor
callee: function (){return t.log("DEBUG",arguments)}
length: 2
proto: Object

add screen sharing

palava-portal sais I don't have the newest browser version

I opposedly think my firefox is pretty new. Here is what its about:support is saying:

Name: Firefox
Version: 52.0
Build-ID: 20170302120751
Update-Kanal: release
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
Betriebssystem: Windows_NT 10.0
Fenster mit mehreren Prozessen: 0/1 (deaktiviert wegen Add-ons)
Abgesicherter Modus: false

This issue is likely connected to #15 #21 #29

Fix or remove palava.browser.fixAudio()

palava.browser.fixAudio() in palava-client assumes a DOM which is equivalent to the palava-portal structure. It tries to click the mute button.

Validate whether this function is still needed (which browser versions do we support?) and possibly rewrite.

ICE discovery problem and deprecated properties

Issue by tomka
Wednesday Jan 08, 2014 at 02:42 GMT
Originally opened as palavatv/palava-client#2


Hi,

I've got the problem that I can't get neither a video nor an audio stream from some people. In such a situation both the other participant and I see our own video, but not the other one. Instead of the video of the other person one sees a white surface and the small size video on the right is just a light grayish box with a small dark gray dot in the center.

Apparently, this network settings of the participants isn't the root of the problem: I (A) have tested with two other people (B and C), where I knew it worked with B. B and C could see each other, but I could only see B and not C.

I've set up my own palava-machine server instance to make further tests, but can't find anything suspicious in it's output. According to a short discussion on IRC, the problem is more likely to be in the client. Looking at the JavaScript console, I see the following when I enter an empty room:

21:05:44.856 Unknown property '-moz-border-radius'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.856 Expected 'none' or URL but found 'progid'.  Error in parsing value for 'filter'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.856 Expected declaration but found '*'.  Skipped to next declaration. all-e4ccc770.css:9
21:05:44.856 Unknown property '-moz-box-shadow'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Error in parsing value for 'background-image'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Expected end of value but found '\9 '.  Error in parsing value for 'background-color'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown pseudo-class or pseudo-element '-ms-input-placeholder'.  Ruleset ignored due to bad selector. all-e4ccc770.css:9
21:05:44.857 Unknown pseudo-class or pseudo-element '-webkit-input-placeholder'.  Ruleset ignored due to bad selector. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-bottomleft'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-topleft'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-topright'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-border-radius-bottomright'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Expected 'none' or URL but found 'alpha('.  Error in parsing value for 'filter'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.857 Unknown property '-moz-background-clip'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property 'zoom'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property 'box-sizing'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property '-moz-background-size'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown property 'hyphens'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Unknown pseudo-class or pseudo-element 'selection'.  Ruleset ignored due to bad selector. all-e4ccc770.css:9
21:05:44.858 Error in parsing value for 'background'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.858 Expected color but found 'top'.  Error in parsing value for 'background'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.859 Error in parsing value for 'font-size'.  Declaration dropped. all-e4ccc770.css:9
21:05:44.860 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:624
21:05:44.860 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:663
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:824
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:908
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:992
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1089
21:05:44.861 SyntaxError: test for equality (==) mistyped as assignment (=)? palava-f6e1cdc0.js:1123
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1121
21:05:44.861 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1116
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1334
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1392
21:05:44.862 SyntaxError: test for equality (==) mistyped as assignment (=)? palava-f6e1cdc0.js:1429
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1434
21:05:44.862 TypeError: anonymous function does not always return a value palava-f6e1cdc0.js:1411
21:05:44.891 TypeError: function u does not always return a value all-e6445a34.js:14
21:05:44.891 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:14
21:05:44.891 TypeError: function O does not always return a value all-e6445a34.js:14
21:05:44.891 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:14
21:05:44.892 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:24
21:05:44.892 TypeError: anonymous function does not always return a value all-e6445a34.js:24
21:05:44.893 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:24
21:05:44.893 TypeError: anonymous function does not always return a value all-e6445a34.js:24
21:05:44.894 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:24
21:05:44.894 TypeError: anonymous function does not always return a value all-e6445a34.js:24
21:05:44.895 TypeError: anonymous function does not always return a value all-e6445a34.js:25
21:05:44.898 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:25
21:05:44.898 TypeError: anonymous function does not always return a value all-e6445a34.js:25
21:05:44.899 TypeError: anonymous function does not always return a value all-e6445a34.js:26
21:05:44.899 TypeError: function U does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: function st does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: function ht does not always return a value all-e6445a34.js:26
21:05:44.900 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:26
21:05:44.900 TypeError: function yt does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: anonymous function does not always return a value all-e6445a34.js:26
21:05:44.900 TypeError: variable e redeclares argument all-e6445a34.js:26
21:05:44.900 TypeError: anonymous function does not always return a value all-e6445a34.js:26
21:05:44.902 TypeError: function h does not always return a value all-e6445a34.js:27
21:05:44.903 TypeError: anonymous function does not always return a value all-e6445a34.js:27
21:05:44.903 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:27
21:05:44.903 TypeError: anonymous function does not always return a value all-e6445a34.js:27
21:05:44.903 SyntaxError: test for equality (==) mistyped as assignment (=)? all-e6445a34.js:27
21:05:44.905 TypeError: anonymous function does not always return a value all-e6445a34.js:27
21:05:44.907 TypeError: anonymous function does not always return a value all-e6445a34.js:46
21:05:44.907 TypeError: anonymous function does not always return a value all-e6445a34.js:100
21:05:44.907 TypeError: anonymous function does not always return a value all-e6445a34.js:136
21:05:44.908 TypeError: anonymous function does not always return a value all-e6445a34.js:209
21:05:44.909 TypeError: anonymous function does not always return a value all-e6445a34.js:263
21:05:44.910 SyntaxError: mistyped ; after conditional? all-e6445a34.js:263
21:05:44.910 TypeError: anonymous function does not always return a value all-e6445a34.js:263
21:05:44.930 ReferenceError: reference to undefined property [][1] all-e6445a34.js:27
21:05:44.932 ReferenceError: reference to undefined property p.delegateType all-e6445a34.js:24
21:05:44.933 ReferenceError: reference to undefined property e.selector all-e6445a34.js:14
21:05:44.978 Unknown property 'box-sizing'.  Declaration dropped. test3
21:05:44.979 ReferenceError: reference to undefined property this[xt(...)] all-e6445a34.js:28
21:05:44.985 ReferenceError: reference to undefined property [][1] all-e6445a34.js:27
21:05:44.986 ReferenceError: reference to undefined property r[n] all-e6445a34.js:24
21:05:44.988 ReferenceError: reference to undefined property w[d] all-e6445a34.js:26
21:05:44.990 ReferenceError: reference to undefined property ot.event.triggered all-e6445a34.js:25
21:05:44.992 ReferenceError: reference to undefined property r[gt.expando] all-e6445a34.js:25
21:05:44.992 ReferenceError: reference to undefined property s.title all-e6445a34.js:30
21:05:44.994 ReferenceError: reference to undefined property e.headers all-e6445a34.js:27
21:05:44.994 ReferenceError: reference to undefined property t.params all-e6445a34.js:27
21:05:44.994 ReferenceError: reference to undefined property e.n all-e6445a34.js:26
21:05:45.000 ReferenceError: reference to undefined property ot.event.triggered all-e6445a34.js:24
21:05:45.001 Use of getPreventDefault() is deprecated.  Use defaultPrevented instead. all-e6445a34.js:25
21:05:45.001 ReferenceError: reference to undefined property e.result all-e6445a34.js:25
21:05:45.197 ReferenceError: reference to undefined property n[i] all-e6445a34.js:26
21:05:45.215 ReferenceError: reference to undefined property u[i] all-e6445a34.js:24
21:05:45.219 ReferenceError: reference to undefined property s.room all-e6445a34.js:41
21:05:45.219 ReferenceError: reference to undefined property s.userMediaTitles all-e6445a34.js:30
21:05:49.975 ReferenceError: reference to undefined property i[o] all-e6445a34.js:25
21:05:52.423 "DEBUG" [object Arguments] all-e6445a34.js:27
21:05:52.541 ReferenceError: reference to undefined property c.assign all-e6445a34.js:263
21:05:52.536 "DEBUG" [object Arguments] all-e6445a34.js:27
21:05:52.545 "DEBUG" [object Arguments] all-e6445a34.js:27

If a participant joins, independent of whether it eventually works or not, I get the following additional lines:

21:07:37.742 "DEBUG" [object Arguments] all-e6445a34.js:27
21:07:41.734 Unhandled state type: 1
21:07:41.826 remoteStreams is deprecated!
21:07:41.834 ReferenceError: reference to undefined property s.name all-e6445a34.js:52
21:07:41.826 "DEBUG" [object Arguments] all-e6445a34.js:27

the first debug object of the second log snipped says "peer joined" and the second says "peer stream ready". When I look at the peerConnection property of the debug object's field '1' I also get:

21:14:13.312 localStreams is deprecated!
21:14:13.312 remoteStreams is deprecated!
21:14:13.312 readyState is deprecated!

However, one property of the peerConnection object that is different between the working and non working case is iceConnectionState. It reads 'connected' for the working and 'closed' for the non working case. There is also readyState 'active' vs. 'closed' and and for signalingState 'stable' vs. 'closed'. Consequently, remoteStream is an object in the working and null in the non working case.

This log was generated in Firefox 26.0. In the working case the participant had Iron 31.0.1700.0, but I got it also working when the participant had Firefox 25 and 26. So apparently the problem is not the browsers, but the ICE discovery, right?

According to http://www.html5rocks.com/en/tutorials/webrtc/basics/#ice for the discovery several things are tried. Can palava give some information which step exactly fails? Is it possible to involve a TURN server?

Edit: I just installed turnserver and replaced line 543 of palava-f6e1cdc0.js with (IP and pass removed):

new palava.browser.PeerConnection({
        iceServers: [
          {url: "stun:stun.l.google.com:19302"},
          {url: "turn:[email protected]:3478", credential: "PASSWORD"}
        ]
      });

However, when having the TURN line in there, palava tells me my browser doesn't support WebRTC. It seems to me that there isn't even an exception thrown (nothing is shown if I add console output in the catch block). This happens only in Firefox, in Chrome the test works. Any idea why this happens?

Mute Yourself

Currently it is only possible to mute other conference participants. It would be nice to provide a self mute button.

Audio Only Mode

Issue by ax3l
Wednesday Jul 23, 2014 at 11:17 GMT
Originally opened as palavatv/palava-client#8


Hey guys,

thanks for the great software!
One minor: for quite bad connections It would be great if one could generally use an "Audio only" mode :)

Equal Mixing of Audio

Hi,

we tried to play music today in a local area (same city, low-latency networks) and realized that all apps we tried (Zoom, Skype, Palava, etc.) had the following problem: they are all business-oriented and select a single speaker at a time. Latency actually was not that bad at all, but if multiple people speak (play) at the same time, all but one will be lowered in volume. Furthermore, the person that is active jumps between multiple "speakers"/musicians.

Do you think one could configure palava in a way that all incoming audio is mixed equally? A webrtc powered platform to play together (e.g. with 2-4 musicians, N listeners #42) would be wonderful.

Looking forward to your ideas,
Axel

Newbie socket error

First off: Palava is absolutely awesome! Thanks for your hard work!

I'm trying to connect to a locally installed palava-server, with the demo script pointing to my development machine ip

channel = new palava.WebSocketChannel('wss://10.0.0.111:4233')
#...
options: { stun: 'stun:10.0.0.111', joinTimeout: 500 }

and I'm getting

2015-01-27 17:34:43 | Starting RTC Socket Server on port 4233
*** Socket Error *** EventMachine::WebSocket::HandshakeError ***
Invalid HTTP header: Could not parse data entirely

Browser console tells me

WebSocket connection to 'wss://10.0.0.111:4233/' failed: Error in connection establishment: net::ERR_CONNECTION_CLOSED

which is consistent.
When I'm not trying to use my own server and go with the Palava ones, it works nicely.

It seems, I'm doing something completely wrong here with the server ... any ideas?
Do I have to use a proxy in front? Is there a way to use Apache instead of Nginx for this?

changable PIDFile path

Issue by Andrwe
Saturday Jan 25, 2014 at 16:23 GMT
Originally opened as palavatv/palava-machine#5


Hi,

it should be possible to specify the path of the PIDFile while running in daemon-mode.

If you run the daemon as non-root-user the path of the daemon-binary has to be writeable for this user otherwise the daemon doesn't start.
This means currently you aren't able to install this application in a default linux FHS because the PIDFile would be created in /usr/bin/.

A quick fix I'm using is to add the following lines to the parameters of "Daemons.run":
dir_mode: :normal,
dir: "/var/run/palava-machine/",

This approach isn't quite portable as the path has to be created by the installation process.

Regards,
Andrwe

redis_address is not used for stats

Issue by Andrwe
Saturday Jan 25, 2014 at 12:35 GMT
Originally opened as palavatv/palava-machine#4


Hi,

in jobs/export_stats_job.rb you define initialize() with two parameters "redis_address" and "mongo_address" which can be given via command line.

But you don't use redis_address to start the redis-connection.
Instead you use hardcoded localhost:6379.

Thus you can't change the redis-server configuration withour losing the stats-mechanism.

The call should be changed to something like:
EM::Hiredis.connect "redis://#{@redis_address}/#{@redis_db}" (used in manager.rb)

Regards,
Andrwe

Remove versions from supported browsers

Issue by thammi
Thursday Oct 02, 2014 at 21:38 GMT
Originally opened as https://github.com/palavatv/palava-portal/issues/20


I think we should remove the version numbers from the supported browsers view. All versions of the browsers which are currently supported should have WebRTC support (verified for Chrome an Firefox, could not find official statements from Opera which versions are supported).

Omitting the versions will remove uncertainty for users who do not know which versions they have and underline how widely available WebRTC is.

after few sessions, user stays in private room

Issue by Cathryne
Sunday Feb 02, 2014 at 15:52 GMT
Originally opened as https://github.com/palavatv/palava-portal/issues/8


Hello!

I've had this problem in 2 different private rooms already and am wondering from what it could result:

After using a private room for a few days to phone 1 other user a few times, one of our "presences" stayed/got stuck. Meaning that it's always already there when entering the room, although both our computers were powered in between. It retained the given name, but was marked with a crossed-out loudspeaker and the video box had only one black dot inside.

Could this be a result of a browser crashing or being closed too quickly during a palava session? Should only the browser tab be closed first, to properly end a session? Could you maybe implement an inactivity-kick?

Browser incompatibilities

Issue by ce6n
Thursday Jan 30, 2014 at 12:08 GMT
Originally opened as https://github.com/palavatv/palava-portal/issues/7


Some browser combinations did not work for me. I'll try to make a list:

1 2 working?
Firefox 26.0 (OSX 10.9.1) Firefox 26.0 (Windows7) no video / no sound
Chrome 32.0.1700.102 (OSX 10.9.1) Firefox 26.0 (Windows7) no video / no sound
Chrome 32.0.1700.102 (OSX 10.9.1) Chrome 32.0.1700.99 (Android) flawless
Firefox 26.0 (OSX 10.9.1) Chrome 32.0.1700.99 (Android) no video
Firefox 26.0 (Windows7) Chrome 32.0.1700.99 (Android) no video / no sound
Firefox 26.0 (OSX 10.9.1) Chrome 32.0.1700.102 (OSX 10.9.1)) no video

Maybe this helps

show help in debugging connection problems

Issue by payload
Sunday Jan 05, 2014 at 22:28 GMT
Originally opened as https://github.com/palavatv/palava-portal/issues/4


When somebody notices connection problems, it is sometimes not obvious why there are problems.

  • hole punching didn't do its job (why?)
  • slow connection
  • is there another possible and detectable issue?

I propose, the cause of such problems should be detected and a user should get the opportunity to see these causes and maybe a helping link how to fix it.

This involves adding detection of errors in the palava-machine, passing information to the clients (palava-client) and integrating a possibility to see this information in the UI (palava-portal). Maybe it also involves adding a little test setup for palava-machine to generate such errors.

What do you think about it?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.