A websocket-based signaling server in Go.
-
Install the Go tools and workspaces as documented at http://golang.org/doc/install and http://golang.org/doc/code.html
-
Checkout the
apprtcrepositorygit clone https://github.com/webrtc/apprtc.git -
Make sure to set the $GOPATH according to the Go instructions in step 1
E.g. export GOPATH=$HOME/goWorkspace/
mkdir $GOPATH/src
-
Link the collider directories into
$GOPATH/srcln -s `pwd`/apprtc/src/collider/collider $GOPATH/src ln -s `pwd`/apprtc/src/collider/collidermain $GOPATH/src ln -s `pwd`/apprtc/src/collider/collidertest $GOPATH/src -
Install dependencies
go get collidermain -
Install
collidermaingo install collidermain
$GOPATH/bin/collidermain -port=8089 -tls=true
go test collider
These instructions assume you are using Debian 7/8 and Go 1.6.3.
- Change roomSrv to your AppRTC server instance e.g.
var roomSrv = flag.String("room-server", "https://your.apprtc.server", "The origin of the room server")- Then repeat step 6 in the Building section.
- Login on the machine that is going to run Collider.
- Create a Collider directory, this guide assumes it's created in the root (
/collider). - Create a certificate directory, this guide assumes it's created in the root (
/cert). - Copy
$GOPATH/bin/collidermainfrom your development machine to the/colliderdirectory on your Collider machine.
If you are deploying this in production, you should use certificates so that you can use secure websockets. Place the cert.pem and key.pem files in /cert/. E.g. /cert/cert.pem and /cert/key.pem
1. Add a /collider/start.sh file:
#!/bin/sh -
/collider/collidermain 2>> /collider/collider.log2. Make it executable by running chmod 744 start.sh.
3. Add the following line to /etc/inittab to allow automatic restart of the Collider process (make sure to either add coll as an user or replace it below with the user that should run collider):
coll:2:respawn:/collider/start.sh4. Run init q to apply the inittab change without rebooting.
5. Create a service by doing sudo nano /lib/systemd/system/collider.service and adding the following:
[Unit]
Description=AppRTC signalling server (Collider)
[Service]
ExecStart=/collider/start.sh
StandardOutput=null
[Install]
WantedBy=multi-user.target
Alias=collider.service
6. Enable the service: sudo systemctl enable collider.service
7. Verify it's up and running: sudo systemctl status collider.service
To enable rotation of the /collider/collider.log file add the following contents to the /etc/logrotate.d/collider file:
/collider/collider.log {
daily
compress
copytruncate
dateext
missingok
notifempty
rotate 10
sharedscripts
}
The log is rotated daily and removed after 10 days. Archived logs are in /collider.