add socket.io back, cleanup
Change-Id: I74e043268c23fb45371f1e397ca2931ca177afc3
diff --git a/app.js b/app.js
index ef03a00..b8c09f4 100644
--- a/app.js
+++ b/app.js
@@ -7,8 +7,8 @@
import http from 'http'
import express from 'express'
import session from 'express-session'
-//const cookieParser = require('cookie-parser')
-//const io = require('socket.io')(server)
+import cookieParser from'cookie-parser'
+import { Server } from'socket.io'
import path from 'path'
import passport from 'passport'
import { Strategy as LocalStrategy } from 'passport-local'
@@ -24,7 +24,7 @@
import indexRouter from './routes/index.js'
-//const cors = require('cors')
+import cors from 'cors'
import JamiRestApi from './routes/jami.js'
import JamiDaemon from './JamiDaemon.js'
@@ -78,6 +78,10 @@
console.log(appConfig)
const development = app.get('env') === 'development'
+ var corsOptions = {
+ origin: 'http://127.0.0.1:3000'
+ }
+
if (development) {
const [ webpack, webpackDev, webpackHot, webpackConfig ] = await Promise.all([
import('webpack'),
@@ -97,7 +101,7 @@
*/
app.disable('x-powered-by')
- app.use(session({
+ const sessionMiddleware = session({
store: sessionStore,
resave: false,
saveUninitialized: true,
@@ -106,11 +110,13 @@
maxAge: 2419200000
},
secret: process.env.SECRET_KEY_BASE
- }))
+ })
+
+ app.use(sessionMiddleware)
app.use(passport.initialize())
app.use(passport.session())
// app.use(app.router)
- //app.use(cors())
+ app.use(cors(corsOptions))
const jami = new JamiDaemon()
const apiRouter = new JamiRestApi(jami).getRouter()
@@ -267,7 +273,29 @@
res.sendFile(path.join(__dirname, 'client', 'dist', 'index.html'))
})
- return http.Server(app)
+ const server = http.Server(app)
+
+ const io = new Server(server, { cors: corsOptions })
+ const wrap = middleware => (socket, next) => middleware(socket.request, {}, next)
+ io.use(wrap(sessionMiddleware))
+ io.use(wrap(passport.initialize()))
+ io.use(wrap(passport.session()))
+ io.use((socket, next) => {
+ if (socket.request.user) {
+ next()
+ } else {
+ next(new Error("unauthorized"))
+ }
+ })
+ io.on('connect', (socket) => {
+ console.log(`new connection ${socket.id}`)
+ const session = socket.request.session
+ console.log(`saving sid ${socket.id} in session ${session.id}`)
+ session.socketId = socket.id
+ session.save()
+ })
+
+ return server
}
loadConfig(configPath)
@@ -275,53 +303,3 @@
.then(server => {
server.listen(3000)
})
-
-/*
-io.on('connection', (socket) => {
- console.log("Client just connected !")
- socket.on('SendMessage', (data) => {
- console.log("Message " + data.text + " sent to " + data.destinationId + " by " + socket.session.user.accountId)
- const msgMap = new jami.dring.StringMap()
- msgMap.set('text/plain', data.text)
- jami.dring.sendAccountTextMessage(socket.session.user.accountId, data.destinationId, msgMap)
- })
-})
-
-io.use((socket, next) => {
- cookieParser(socket.handshake, {}, (err) => {
- if (err) {
- console.log("error in parsing cookie")
- return next(err)
- }
- if (!socket.handshake.signedCookies) {
- console.log("no secureCookies|signedCookies found")
- return next(new Error("no secureCookies found"))
- }
- sessionStore.get(socket.handshake.signedCookies["connect.sid"], (err, session) => {
- socket.session = session
- if (!err && !session) err = new Error('session not found')
- if (err) {
- console.log('failed connection to socket.io:', err)
- } else {
- console.log(session)
- console.log('successful connection to socket.io ' + session.passport.user)
- const userKey = session.passport.user
- deserializeUser(userKey, (err, user) => {
- console.log("deserializeUser: " + user)
- if (err)
- return next(err, true)
- if (!user)
- return next("User not found", false)
-
- console.log("User associated socket id: " + socket.id)
- user.socketId = socket.id
- socket.session.user = user
- console.log("User added to session --------> " + user.accountId)
- //auth.success(data, accept)
- next(err, true)
- })
- }
- })
- })
-})
-*/