2015-07-12 1 views
1

Я работаю над небольшим тестовым проектом для реализации чат-сервера для сайта, над которым я работаю. Я следовал за гидом от http://www.sanwebe.com/2013/05/chat-using-websocket-php-socket, и у меня все получилось очень хорошо, мне также удалось немного изменить его, чтобы вы могли отправлять сообщения отдельным пользователям, а не глобально всем пользователям онлайн.Чат-сервер и показать пользователю ввод

Теперь я ищу, используя ли реализацию, как показано в уроке выше, могу ли я показать, что пользователь в настоящее время печатает.

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

Будет ли моя идея выше быть единственным решением или есть лучшая реализация.

Спасибо за любую помощь, которую вы можете предоставить.

ответ

3

На самом деле это зависит от вашего определения «в настоящее время печатать».

Для меня это будет «есть текст в поле ввода».
Это потребует, чтобы вы прослушивали события change в поле ввода и отправляли сообщение только тогда, когда поле становится от пустого до непустого или наоборот.
И, конечно, серверу необходимо будет отправить сообщение «прекращено печатать», если пользователь отключится.

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

В любом случае, я бы прослушивал change в поле ввода, а не для фактических нажатий клавиш.

+0

Спасибо, что первый вариант звучит лучше, только отправляя ввод, когда поле не пустое – Boardy

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