Skip to content

Instantly share code, notes, and snippets.

@danielstjules
Created June 30, 2014 15:39
Show Gist options
  • Save danielstjules/71ade40ce7c145c857a6 to your computer and use it in GitHub Desktop.
Save danielstjules/71ade40ce7c145c857a6 to your computer and use it in GitHub Desktop.
Patch to use ws with sockjs-node rather than faye-websocket-node
From ae279bfe194b1b17a6dc18e0720e61d253414154 Mon Sep 17 00:00:00 2001
From: "Daniel St. Jules" <danielst.jules@gmail.com>
Date: Thu, 8 May 2014 18:59:20 -0400
Subject: [PATCH] Replace faye-websocket-node with ws
---
package.json | 4 ++--
src/trans-websocket.coffee | 15 +++++++--------
2 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/package.json b/package.json
index 2c6d7e1..2cd028a 100644
--- a/package.json
+++ b/package.json
@@ -10,8 +10,8 @@
"repository": {"type": "git",
"url": "https://github.com/sockjs/sockjs-node.git"},
"dependencies": {
- "node-uuid" : "1.3.3",
- "faye-websocket" : "0.7.2"
+ "node-uuid" : "1.3.3",
+ "ws" : "0.4.30"
},
"devDependencies": {
"coffee-script" : "1.2.x"
diff --git a/src/trans-websocket.coffee b/src/trans-websocket.coffee
index 37b8d6b..5fc2575 100644
--- a/src/trans-websocket.coffee
+++ b/src/trans-websocket.coffee
@@ -4,7 +4,8 @@
# For the license see COPYING.
# ***** END LICENSE BLOCK *****
-FayeWebsocket = require('faye-websocket')
+WebSocketServer = require('ws').Server
+webSocketServer = new WebSocketServer({noServer: true})
utils = require('./utils')
transport = require('./transport')
@@ -28,8 +29,7 @@ exports.app =
sockjs_websocket: (req, connection, head) ->
@_websocket_check(req, connection, head)
- ws = new FayeWebsocket(req, connection, head)
- ws.onopen = =>
+ webSocketServer.handleUpgrade req, connection, head, (ws) =>
# websockets possess no session_id
transport.registerNoSession(req, @,
new WebSocketReceiver(ws, connection))
@@ -43,8 +43,7 @@ exports.app =
status: 400
message: 'Only supported WebSocket protocol is RFC 6455.'
}
- ws = new FayeWebsocket(req, connection, head)
- ws.onopen = =>
+ webSocketServer.handleUpgrade req, connection, head, (ws) =>
new RawWebsocketSessionReceiver(req, connection, @, ws)
return true
@@ -65,7 +64,7 @@ class WebSocketReceiver extends transport.GenericReceiver
@ws.addEventListener('close', @thingy_end_cb)
tearDown: ->
- @ws.removeEventListener('close', @thingy_end_cb)
+ @ws.removeListener('close', @thingy_end_cb)
super
didMessage: (payload) ->
@@ -136,8 +135,8 @@ class RawWebsocketSessionReceiver extends transport.Session
didClose: ->
if not @ws
return
- @ws.removeEventListener('message', @_message_cb)
- @ws.removeEventListener('close', @_end_cb)
+ @ws.removeListener('message', @_message_cb)
+ @ws.removeListener('close', @_end_cb)
try
@ws.close(1000, "Normal closure", false)
catch x
--
1.8.5.2 (Apple Git-48)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment