R
Пользователь стает онлайн, когда присоединяется к сокету и стает офлайн, когда от сокета отключается. Другого не дано.
Во-вторых надо сделать логику вебсокета отдельно, базы - отдельно. И затем просто на соответствующие события повесить хуки для апдейта базы.