Не удается добавить параметр рукопожатия при аутентификации 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"))
Другие вопросы по тегам