about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEshin Kunishima <mikoim@users.noreply.github.com>2017-05-07 00:05:38 +0900
committerEugen Rochko <eugen@zeonfederated.com>2017-05-06 17:05:38 +0200
commit67b7d3d3b6565b88ef94b681b7f7db99b11d2435 (patch)
tree4f178e97833b899b5e7113068a3eebbc47388e71
parent6358a169fd5ac903730d36d00901dfb73be316a7 (diff)
Replace ws with uws (#2807)
* Replace ws with uws

* fix indent

* Adjust indentation

* remove trailing space
-rw-r--r--package.json4
-rw-r--r--streaming/index.js16
-rw-r--r--yarn.lock14
3 files changed, 16 insertions, 18 deletions
diff --git a/package.json b/package.json
index 28855d800..6b88c7a1f 100644
--- a/package.json
+++ b/package.json
@@ -99,11 +99,11 @@
     "style-loader": "^0.16.1",
     "utf-8-validate": "^3.0.1",
     "uuid": "^3.0.1",
+    "uws": "^0.14.5",
     "webpack": "^2.4.1",
     "webpack-manifest-plugin": "^1.1.0",
     "webpack-merge": "^4.1.0",
-    "websocket.js": "^0.1.7",
-    "ws": "^2.1.0"
+    "websocket.js": "^0.1.7"
   },
   "devDependencies": {
     "@kadira/storybook": "^2.35.3",
diff --git a/streaming/index.js b/streaming/index.js
index 883bf33f5..3a7764ee9 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -7,7 +7,7 @@ import redis from 'redis'
 import pg from 'pg'
 import log from 'npmlog'
 import url from 'url'
-import WebSocket from 'ws'
+import WebSocket from 'uws'
 import uuid from 'uuid'
 
 const env = process.env.NODE_ENV || 'development'
@@ -273,12 +273,16 @@ if (cluster.isMaster) {
 
   // Setup stream output to WebSockets
   const streamToWs = (req, ws) => {
-    const heartbeat = setInterval(() => ws.ping(), 15000)
+    const heartbeat = setInterval(() => {
+      // TODO: Can't add multiple listeners, due to the limitation of uws.
+      if (ws.readyState !== ws.OPEN) {
+        log.verbose(req.requestId, `Ending stream for ${req.accountId}`)
+        clearInterval(heartbeat)
+        return
+      }
 
-    ws.on('close', () => {
-      log.verbose(req.requestId, `Ending stream for ${req.accountId}`)
-      clearInterval(heartbeat)
-    })
+      ws.ping()
+    }, 15000)
 
     return (event, payload) => {
       if (ws.readyState !== ws.OPEN) {
diff --git a/yarn.lock b/yarn.lock
index a7ce5fa0b..861a3818b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6671,10 +6671,6 @@ uid-number@~0.0.6:
   version "0.0.6"
   resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
 
-ultron@~1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.0.tgz#b07a2e6a541a815fc6a34ccd4533baec307ca864"
-
 uniq@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
@@ -6765,6 +6761,10 @@ uuid@^3.0.0, uuid@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
 
+uws@^0.14.5:
+  version "0.14.5"
+  resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc"
+
 v8flags@^2.0.10:
   version "2.0.11"
   resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
@@ -7067,12 +7067,6 @@ write@^0.2.1:
   dependencies:
     mkdirp "^0.5.1"
 
-ws@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-2.1.0.tgz#b24eaed9609f8632dd51e3f7698619a90fddcc92"
-  dependencies:
-    ultron "~1.1.0"
-
 xdg-basedir@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-2.0.0.tgz#edbc903cc385fc04523d966a335504b5504d1bd2"