EasyRTC v0.10.0a Released - It is now a module!

665 views
Skip to first unread message

Rod Apeldoorn

unread,
Sep 17, 2013, 9:14:26 PM9/17/13
to eas...@googlegroups.com
We've just pushed a major new version of EasyRTC to GitHub into a brand new Alpha branch. There are many dramatic changes, involving several thousand lines of code, making a longer release cycle necessary.

EasyRTC Alpha is now a proper Node.js module! It is hoped that remaking EasyRTC as a module, along with the event driven server architecture, will make it much easier for developers to extend and customize their WebRTC applications with an easy upgrade method.

Take a look at the new 'server_example' folder. It's hard to believe a custom EasyRTC setup can start with just three small files.

The v0.10.0a Changelog:

New Features:
  • Server/API - Rooms. An EasyRTC application can have multiple rooms. A user can be in one or more rooms at the same time. Users can only see other users in the same room. If no room is provided, connections will be entered into a room named `default`.
  • Server/API - Custom authentication method. Username / Credential can be provided. Username is broadcast to other authenticated users, so it may be used by apps.  
  • Server - Reworked to be node.js module. (BIGGEST NEW FEATURE)
  • Server - New server options handler. Allows possibility of server/application/room level options. Many new options available.
  • Server - Many new server events. This is intended to be the new primary way for developers to interact with EasyRTC server.
  • Documentation - New documentation for internal EasyRTC command messages which highlight how the API and server communicate to each other.

Changes:
  • Server/API - Delta lists. When the online list is changed, only the changed connections are broadcast. This should reduce bandwidth and improve scalability.
  • Server/API - Initial authentication and application setup now handled by a separate socket.io message type called 'easyrtcAuth'. This allows us to easily ignore other messages until a client has authenticated.
  • Server - Better incoming message validation. Now it's handled once right after the message is received.
  • Documentation - While the EasyRTC logo remains, when in text form, EasyRTC will have a capitol "E", which should make writing about it in sentences easier.

Removed Features: 
  • Server - No longer includes modules for express, socket.io. These must now be included in your server app. (See our server examples)
  • Server - No longer uses the winston module for logging. The default listener logs to the console. This can be easily overruled by setting your own `log` listener.
  • Server - No longer includes the experimental STUN server. If there is enough demand we can release it as a separate module, otherwise there are several good STUN and TURN solutions now available.

Fixes:
  • Lots. But please let us know if there's any others which need doing.

Upgrade Note:
  • This is a major release which will require existing installations to carefully upgrade.

Please give this release a try and let us know of any issues!

-
Rod Apeldoorn, Priologic Software

Rod Apeldoorn

unread,
Sep 18, 2013, 8:03:01 PM9/18/13
to
We made a few bug fixes and updated the demo server today.

Getting Updates to the Alpha Version

We won't be identifying releases after every little commit, so it will be up to testers to keep their local versions up to date.
  • If you have the sample server, you can just use npm to update:
    • npm install easyrtc
  • If you prefer git, just ensure you are in the alpha branch and perform a 'git pull'.

Demo Server Updated

I updated our public demo server to use the alpha branch. This greatly reduced the amount of code in our demo_site branch, and can serve as another example for people wondering how to get started.


Instant Message + Rooms Demo

There is a new demo which should be considered a debugging testbed. We created the Instant Message + Rooms demo to actively test several of our newer features, thus its UI is a mess.
Feel free to check it out, but please be kind :)

-Rod Apeldoorn, Priologic Software

Rod Apeldoorn

unread,
Oct 1, 2013, 4:43:28 PM10/1/13
to eas...@googlegroups.com
We just pushed v0.10.1a. which adds several new key features I've been looking forward to. It is available in the alpha branch on github.

Biggest New Features:

"Fields"

 - Used to set custom server variables relevant to your application.
 - Can be attached to individual applications, rooms, or connections.
 - Defaults can be set using the options "appDefaultFieldObj", "roomDefaultFieldObj", "connectionDefaultFieldObj". These will be used when new applications, rooms, and connections are created.
 - Set using appObj.setField(), roomObj.setField(), and connectionObj.setField() 
 - If the isShared option is true, then the field will be shared to the API. These should allow for more capable applications.
 - API has new functions:  getRoomFields(), getApplicationFields(), getConnectionFields()
 
Server Options For Applications and Rooms:

 - Server options can now be set against applications and rooms
 - Documentation is in /doc/easyrtc_server_configuration.md
 - Default options are set by us via /lib/easyrtc_default_options.js
 - At the server level, options can be set and retrieved using easyrtc.setOption("option name", "option value"); or easyrtc.getOption("option name")
 - Application and room options are set using appObj.setOption(), appObj.getOption, roomObj.setOption(), and roomObj.getOption()

File Transfer + Data Channels:

 - NEW easyrtc_ft.js - A separate official EasyRTC client side module for handling file transfers. See the updated file sharing demo for an example.
 - Updated Data Channel File-sharing Demo. New methods for transferring much larger files.
 - We were tossing around multiple simultaneous 100+mb files reliably in Firefox or Chrome Canary (not yet cross-browser).

Please give this new version a run through!

Rod Apeldoorn, Priologic Software

lanch...@163.com

unread,
Oct 10, 2013, 11:08:43 AM10/10/13
to eas...@googlegroups.com

Help me to see how it is, can not be installed, the equipment is 0.10

Eric Davies

unread,
Oct 10, 2013, 12:45:45 PM10/10/13
to eas...@googlegroups.com
The error message would seem to indicate you are running on Windows and don't have git installed.
What happens when you issue the command 
    git
in a console window like the one you issued the npm command in?

If you don't have git, you can get it from git.org.

Eric

Eric Davies

unread,
Oct 10, 2013, 12:47:00 PM10/10/13
to eas...@googlegroups.com
Looks like that should be git-scm.com instead of git.org.

lanch...@163.com

unread,
Oct 10, 2013, 8:50:43 PM10/10/13
to eas...@googlegroups.com
Thank you,

Devin Flake

unread,
Oct 17, 2013, 5:07:10 PM10/17/13
to eas...@googlegroups.com
I followed the instructions for installing the alpha (https://github.com/priologic/easyrtc/tree/alpha)

but they didn't work for me.  I tried downloading the the 3 files and running 'npm install' and I also tried downloading the entire zip file but I must be doing something wrong.

Any ideas?

[ro...@vm9228.ut1 server_example]# npm install
npm WARN package.json easyrtc_ser...@0.1.0 No repository field.
npm ERR! git clone git://github.com/priologic/easyrtc.git Cloning into bare repository '/root/.npm/_git-remotes/git-github-com-priologic-easyrtc-git-07ad0ebc'...
npm ERR! git clone git://github.com/priologic/easyrtc.git 
npm ERR! git clone git://github.com/priologic/easyrtc.git fatal: unable to connect to github.com:
npm ERR! git clone git://github.com/priologic/easyrtc.git github.com[0: 192.30.252.131]: errno=Connection timed out
npm ERR! Error: Command failed: fatal: unable to connect to github.com:
npm ERR! github.com[0: 192.30.252.131]: errno=Connection timed out
npm ERR! 
npm ERR! 
npm ERR!     at ChildProcess.exithandler (child_process.js:637:15)
npm ERR!     at ChildProcess.EventEmitter.emit (events.js:98:17)
npm ERR!     at maybeClose (child_process.js:735:16)
npm ERR!     at Socket.<anonymous> (child_process.js:948:11)
npm ERR!     at Socket.EventEmitter.emit (events.js:95:17)
npm ERR!     at Pipe.close (net.js:466:12)
npm ERR! If you need help, you may report this log at:
npm ERR! or email it to:
npm ERR!     <np...@googlegroups.com>

npm ERR! System Linux 3.4.45-4.omtr
npm ERR! command "node" "/usr/bin/npm" "install"
npm ERR! cwd /root/easyrtc-alpha/server_example
npm ERR! node -v v0.10.20
npm ERR! npm -v 1.3.6
npm ERR! code 128
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /root/easyrtc-alpha/server_example/npm-debug.log
npm ERR! not ok code 0

Eric Davies

unread,
Oct 18, 2013, 12:02:34 PM10/18/13
to eas...@googlegroups.com
Hi Devin,

We were noticing some weirdness with github yesterday. I just did an npm install on a linux box this morning and the problems we were seeing yesterday didn't present themselves.

Eric.

Rod Apeldoorn

unread,
Oct 28, 2013, 9:06:18 PM10/28/13
to eas...@googlegroups.com
We just pushed EasyRTC v0.10.2-alpha to GitHub in the Alpha branch. This was mostly a server update with plenty of bug fixes.

This is also the first modular version we've pushed to npm. See the server_example folder for a working package.json file. This should make downloading and incorporating the alpha branch much simpler.

New Features:
  • Server - Many changes to public object to ease development, including exposing events and util objects at every level.
  • Server - easyrtc_default_event_listeners.js has been improved by the addition of several new listeners. JSDoc's have been written for each default listener.
  • Server - New events "authenticate", "roomJoin", "roomCreate", "roomLeave"
  • Server - Initial support for Express sessions.
  • Server - Support for checking for minified version of API (not yet provided).
Changes:
  • API - Added better treatment of server disconnect
  • Server - Additional support for fields.
  • Server - Many existing events have been renamed or improved. Too many to list here.
  • Documentation - JSDoc's of client API and server code is in separate folders.
Fixes:
    • Lots. But please let us know if there's any others which need doing.
    • Demos - Fixed several of the demos which broke in 0.10.1a

    Pierre MARS

    unread,
    Oct 29, 2013, 7:38:46 AM10/29/13
    to eas...@googlegroups.com
    Cool... I can t wait to test it!
    great job!

    lanch...@163.com

    unread,
    Nov 3, 2013, 6:22:58 AM11/3/13
    to eas...@googlegroups.com
    0.10 version of the tried connecting mobile phones and computers, the video is black. 0.9 no problem. There is a screen sharing tried never succeeded. I do not know what the reasons are, using Chrome Canary also sets getUserMedia are available, suggesting that the information is "Message rejected. The provided msgType is unsupported." Operating system is xp

    Rod Apeldoorn

    unread,
    Nov 17, 2013, 11:43:35 PM11/17/13
    to
    We just pushed v0.10.3-alpha to both Github and NPM. Please give this one a good test!

    I've been told to stop adding all these damned features and to get this out the door :) So I'll be putting this into the beta branch ASAP so it can get on track to become our master. I'll put out a separate post for that. We will be bumping the major version number to 1.0.

    The biggest changes in this latest push:
    • In with 'easyrtc.easyApp()' and out with 'easyrtc.initManaged()'  The old name will work for the time being.
    • On the server side there were several event and convenience functions added.
    • Lots of documentation updates!

    Here's the change log for this point release:

    New Features:
    • API + Server - API fields. These are basically variables which are set by the client and shared to others in the room. Many possibilities!
    • API + Server - ICE Config improvements. Client can now request an updated ICE configuration from the server, or server can force new one on client.
    • Server - isConnected() function added to connection object.
    • Server - Added convenience functions to several objects such as getAppName()

    Changes:
    •   API + Demos - Renaming initManaged() to easyApp(). Old name remains for the time being
    •   Server - isAuthenticated() now a synchronous function and returns a boolean 
    Reply all
    Reply to author
    Forward
    0 new messages