From 4f4c07169357af8460e1f46b89bb77b8123a7202 Mon Sep 17 00:00:00 2001 From: shane tully Date: Sat, 11 Mar 2017 23:38:14 -0800 Subject: [PATCH] fix #16: check if websocket is open before sending data to it --- server/server.js | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/server/server.js b/server/server.js index 666ec33..0a72d1b 100644 --- a/server/server.js +++ b/server/server.js @@ -1,11 +1,12 @@ -var HTTPS_PORT = 8443; +const HTTPS_PORT = 8443; -var fs = require('fs'); -var https = require('https'); -var WebSocketServer = require('ws').Server; +const fs = require('fs'); +const https = require('https'); +const WebSocket = require('ws'); +const WebSocketServer = WebSocket.Server; // Yes, SSL is required -var serverConfig = { +const serverConfig = { key: fs.readFileSync('key.pem'), cert: fs.readFileSync('cert.pem'), }; @@ -17,10 +18,10 @@ var handleRequest = function(request, response) { // Render the single client html file for any request the HTTP server receives console.log('request received: ' + request.url); - if(request.url == '/') { + if(request.url === '/') { response.writeHead(200, {'Content-Type': 'text/html'}); response.end(fs.readFileSync('client/index.html')); - } else if(request.url == '/webrtc.js') { + } else if(request.url === '/webrtc.js') { response.writeHead(200, {'Content-Type': 'application/javascript'}); response.end(fs.readFileSync('client/webrtc.js')); } @@ -43,9 +44,11 @@ wss.on('connection', function(ws) { }); wss.broadcast = function(data) { - for(var i in this.clients) { - this.clients[i].send(data); - } + this.clients.forEach(function(client) { + if(client.readyState === WebSocket.OPEN) { + client.send(data); + } + }); }; console.log('Server running. Visit https://localhost:' + HTTPS_PORT + ' in Firefox/Chrome (note the HTTPS; there is no HTTP -> HTTPS redirect!)');