2009-07-14 4 views
2

Я делаю чат Comet с Erlang и PHP. Но теперь я думаю, что я столкнулся с проблемой: соединение для опроса отключится и автоматически подключится примерно через определенное время (я установил это с 10 секундами), поэтому будет время, когда пользователь не подключится к чат-серверу. Если пользователь отправляет сообщение в это время, сообщение будет мертвым (никто не сможет его получить).Как избежать мертвого сообщения в чате Comet?

В клиентском коде я использую jquery с jsonp для реализации опроса. Есть ли хороший способ решить эту проблему?

Заранее спасибо ~

ответ

0

Когда сообщение отправляется, только что JQuery восстановить сразу и отправить сообщение, когда он делает это.

1

Вам разрешено использовать два параллельных соединения; чередуйте их так, чтобы один из них подключался (и нажимал сообщения пользователя на сервер), пока другой прослушивает.

1

Имейте сеансовый процесс на сервере, который хранит все сообщения, пока клиент не подключен. Если клиент не подключается к некоторому (настраиваемому) времени, сеанс может умереть. Когда клиент подключается, сеанс может отправлять все сообщения в очередь в соединение.

+0

Возможно, хорошая идея, как почтовый ящик. Но я должен учитывать стоимость, если я создаю почтовый ящик для каждого подключения. Какие-либо предложения? –

+0

Если сообщения являются бинарниками/атомами, вы будете хранить указатели, и если тайм-аут будет разумным, у них не будет времени так много наращивать. – puzza007

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