2013-07-07 10 views
1

Я хочу записать историю сообщений socket.io, то есть содержание двух пользователей, которые говорили, для последующего использования. Есть ли встроенные функции socket.io, чтобы реализовать это, или если нет, что это хороший способ реализовать это?есть хороший способ сохранить историю сообщений socket.io

ответ

2

Во-первых, вам нужно каким-то образом идентифицировать пользователей с уникальным идентификатором, который не исчезает, когда пользователь отключается, например, имя пользователя или адрес электронной почты.

Все сообщения в разговоре должны быть как-то сохранены на сервере, как в «чате-объекте» для разговора между двумя пользователями.

Периодически, когда пользователь отключается или каждый раз, когда изменяется «chat-object» (например, новое сообщение), сохраните «chat-object» в базе данных любого типа, который вам нравится. Вы можете использовать JSON для сериализации «chat-object», сохранить его любым способом (например, пользовательский файл, базу данных mysql или что-то еще). Чтобы сериализовать объект, используйте приведенный ниже код на сервере узла:

var chatString = JSON.stringify(theChatObject); 

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

var oldChat = JSON.parse(theRetrievedChatString); 
+0

Таким образом, это вызовет слишком много накладных расходов, если я попытаюсь сохранить «chat-object» в базу данных (т. Е. Mongodb) каждый раз при создании нового сообщения? – Julian

+0

«слишком много» зависит от того, сколько нагрузки будет испытывать сервер. Если это проблема, это может помочь просмотреть другие варианты. Тем не менее, сохранение его в базе данных каждый раз может быть полезным, поскольку оно снижает риск потери сообщений. – Adam

Смежные вопросы