Не удается добавить параметр рукопожатия при аутентификации socket.io
Я использую socket.io V1.2.1 и пытаюсь следовать официальной вики-странице авторизации Socket.io, но кажется, что она немного устарела (может быть написана для версии 0.9), поэтому после внесения нескольких изменений, вот мой код для запуска моего сервера и настройки аутентификации:
server = http.createServer(app)
io = require('socket.io')(server)
global.io = io
global.liveTopicIo = io.of "/live-topic"
server.listen(3100)
io.set 'authorization', (handshakeData, callback)->
# doing some authentication logic here
# & reading 'currentUser'
if isAuthenticated
handshakeData.user = currentUser
callback null, true
else
callback null, false
liveTopicIo.on "connection", (socket) ->
console.log 'user: ', socket.handshake.user
console.log 'a user connected'
предыдущий код печатает следующее
пользователь: undefined
пользователь подключен
Итак, почему я не могу добавить параметры в handshake
данные? И как это исправить, чтобы добавить текущего пользователя?
1 ответ
Решение
Исходя из примечаний по миграции с 0.9 до 1.x, авторизация не должна зависеть от set
функционировать больше, но вместо этого должно быть обычное промежуточное программное обеспечение Express, поэтому должно быть так:
liveTopicIo.use (socket, next)->
# doing some authentication logic here based on the info
# from socket.handshake & reading 'currentUser'
if isAuthenticated
socket.handshake.user = currentUser
next()
else
next(new Error("Access Denied"))