1
0
Fork 0
mirror of https://github.com/openstf/stf synced 2025-10-03 17:59:28 +02:00

Update to Socket.IO 1.0.

This commit is contained in:
Simo Kinnunen 2014-06-03 19:00:25 +09:00
parent 27d9014e90
commit 41661c9384
4 changed files with 43 additions and 41 deletions

View file

@ -8,7 +8,7 @@
"angular-animate": "~1.3.0-beta.8",
"angular-touch": "~1.3.0-beta.8",
"se7en-bootstrap-3": "git@ghe.amb.ca.local:stf/se7en-bootstrap-3.git#46b7dd0792cfdc66bf01e351cd680de88740d60c",
"socket.io-client": "~0.9.16",
"socket.io-client": "~1.0.4",
"lodash": "~2.4.1",
"oboe": "~1.14.7",
"fa-borderlayout": "git@ghe.amb.ca.local:gunther-brunner/fa-borderlayout.git",

View file

@ -16,6 +16,7 @@ var Promise = require('bluebird')
var httpProxy = require('http-proxy')
var _ = require('lodash')
var request = Promise.promisifyAll(require('request'))
var proxyaddr = require('proxy-addr')
var logger = require('../util/logger')
var pathutil = require('../util/pathutil')
@ -34,9 +35,13 @@ module.exports = function(options) {
var log = logger.createLogger('app')
, app = express()
, server = http.createServer(app)
, io = socketio.listen(server)
, io = socketio.listen(server, {
serveClient: false
, transports: ['websocket']
})
, channelRouter = new events.EventEmitter()
, proxy = httpProxy.createProxyServer()
, sessionMiddleware
proxy.on('error', function(err) {
log.error('Proxy had an error', err.stack)
@ -46,11 +51,6 @@ module.exports = function(options) {
app.set('views', pathutil.resource('app/views'))
app.set('strict routing', true)
app.set('case sensitive routing', true)
app.set('trust proxy', true)
io.set('log level', 1)
io.set('browser client', false)
io.set('transports', ['websocket'])
if (!options.disableWatch) {
app.use('/static/build', webpack({
@ -78,7 +78,7 @@ module.exports = function(options) {
app.use(serveFavicon(pathutil.resource(
'bower_components/stf-graphics/logo/exports/STF-128.png')))
app.use(cookieSession({
app.use(sessionMiddleware = cookieSession({
name: options.ssid
, keys: [options.secret]
}))
@ -230,45 +230,45 @@ module.exports = function(options) {
})
})
io.set('authorization', (function() {
var session = Promise.promisify(cookieSession({
name: options.ssid
, keys: [options.secret]
}))
return function(handshake, accept) {
var res = Object.create(null)
session(handshake, res)
.then(function() {
var token = handshake.session.jwt
if (token) {
return dbapi.loadUser(token.email)
.then(function(user) {
if (user) {
handshake.user = user
accept(null, true)
}
else {
accept(null, false)
}
})
io.use(function(socket, next) {
var req = socket.request
, res = Object.create(null)
sessionMiddleware(req, res, next)
})
io.use(function(socket, next) {
var req = socket.request
// This is similar to what Express does behind the scenes
req.ip = proxyaddr(req, app.get('trust proxy fn'))
next()
})
io.use(function(socket, next) {
var req = socket.request
, token = req.session.jwt
if (token) {
return dbapi.loadUser(token.email)
.then(function(user) {
if (user) {
req.user = user
next()
}
else {
accept(null, false)
next(new Error('Invalid user'))
}
})
.catch(function() {
accept(null, false)
})
.catch(next)
}
})())
else {
next(new Error('Missing authorization token'))
}
})
io.on('connection', function(socket) {
var channels = []
, user = socket.handshake.user
, ip = socket.handshake.headers['x-forwarded-for'] ||
socket.handshake.address.address
, user = socket.request.user
socket.emit('socket.ip', ip)
socket.emit('socket.ip', socket.request.ip)
function joinChannel(channel) {
channels.push(channel)

View file

@ -1,8 +1,9 @@
var io = require('socket.io')
module.exports = function SocketFactory($rootScope, VersionUpdateService) {
var socket = io.connect(null, {
reconnect: false
var socket = io('/', {
reconnection: false
, transports: ['websocket']
})
socket.scoped = function($scope) {

View file

@ -24,7 +24,7 @@ module.exports = {
, 'angular-growl': 'angular-growl-v2/build/angular-growl.js'
, 'angular-growl-css': 'angular-growl-v2/build/angular-growl.min.css'
, 'localforage': 'localforage/dist/localforage.js'
, 'socket.io': 'socket.io-client/dist/socket.io'
, 'socket.io': 'socket.io-client/socket.io.js'
, 'oboe': 'oboe/dist/oboe-browser'
, 'ng-file-upload-shim5': 'ng-file-upload/angular-file-upload-html5-shim'
, 'ng-file-upload-main': 'ng-file-upload/angular-file-upload'
@ -63,6 +63,7 @@ module.exports = {
, { test: /ui-bootstrap-tpls\.js/, loader: 'script'}
, { test: /dialogs\.js/, loader: 'script'}
, { test: /bluebird\.js/, loader: 'imports?require=>undefined'}
, { test: /socket\.io\.js/, loader: 'imports?require=>undefined'}
]
, noParse: [
// pathutil.resource('bower_components')