Cue Storyline: это начало 21-го века, и большинство вещей ушли в прошлое. Тем не менее, вы и ваши коллеги-разработчики кода стремитесь воссоздать 90-е годы. В рамках этой задачи вы должны воссоздать минималистичный чат.
Цель: создать чат с как можно меньшим количеством байтов. Программы, которые вы пишете, должны функционировать как простой сервер, который обслуживает веб-страницу, которая позволяет пользователям размещать текст на экране.
Фактическая цель: фактически разместить рабочий чат с вашего компьютера. Вам не нужно этого делать, но так намного веселее.
Требования:
- Пользователи должны быть в состоянии дать себе имя пользователя, которое длится для сеанса
- Пользователи должны иметь возможность многократно печатать и отправлять текст, который будет отображаться другим пользователям.
- Каждый пользователь должен иметь возможность видеть текст, представленный всеми пользователями, вместе с именами отправителей, и информация должна отображаться в хронологическом порядке.
- На странице также должно отображаться количество людей в сети и список их имен
- Ваш чат должен быть доступен любому человеку в Интернете, который знает, где его найти (например, знает IP-адрес).
- Он должен функционировать в современных веб-браузерах.
Все остальное зависит от вас!
Материалы:
- Должен включать исходный код или ссылку на исходный код
- Должны включать скриншоты функционального чата
- Должен включать общий размер в байтах всех написанных вами программ / файлов, необходимых для его работы.
Эта задача была в песочнице некоторое время, так что, надеюсь, все изломы были решены.
Ответы:
PHP + JQuery + HTML + CSS, 1535 байт
Это представление больше склоняется к тому, что ФП считает «фактической целью». Это полнофункциональный чат-сервер, который может быть размещен практически на любом веб-сервере.
Функциональность включает в себя:
Чтобы стать сеансом, введите псевдоним в соответствующем поле и нажмите Tabили Enterдля отправки. Если псевдоним уже используется, вы будете уведомлены. Отправка сообщений также осуществляется через Enter.
Для вашего удобства архив всех файлов можно найти здесь: chat.zip (выберите «Загрузить» в меню «Файл»). Для установки распакуйте в веб-каталог на любом сервере с PHP 5.4 или выше.
Предостережения:
cache:false
к каждому запросу Ajax.change
событие не вызывается (однако нажатие Tab работает). Это можно исправить, добавивonkeypress
обработчик, проверив, был ли ключ Enter, а затем вызвав$(v).blur().focus()
.Короче говоря, IE не поддерживается.
клиент
Расположение элементов может быть немного более надежным, но оно должно выглядеть хорошо с минимальным размером окна около 800x600.
chat.htm (190 байт)
ccc (136 байт)
c.js (435 байт)
сервер
Я прошу прощения за то, что сервер был разбит на множество крошечных кусочков. Альтернативой может быть использование адекватного протокола сообщений (через JSON-кодирование / декодирование) или наличие большого
if ... elseif ...
соответствии с пост-переменных. Создание отдельных скриптов, просто запрос из того, что вам нужно, намного короче и, возможно, проще, чем оба.o.php (119 байт) O ручки , как подключение к базе данных «»
c.php (57 байт). C пропускает изменения в «базе данных».
p.php (151 байт) P ОЛЛС для новых сообщений
s.php (62 байта) S завершить сообщение на сервер
u.php (222 байт) U регистрации Ser или изменить псевдоним
n.php (65 байт) Возвращает список пользователей н Эймс
l.php (98 байт) Пользователь имеет л EFT (закрыли их браузер)
источник
onchange=u
без скобок. Однако вы не получите согласованного контекста, но он вам все равно не нужен.Питон, 230
Это довольно минимально, но, похоже, на высоте. Пользователи считаются «просматривающими страницу», если они общались в чате в течение последних 99 секунд.
Это использует один из моих самых любимых трюков в Python: значения по умолчанию - это просто ссылки на то, что вы передали. Если это изменчивый объект, он просто приходит на прогулку.
Другой, которым я редко пользуюсь - карри!
Запуск сервера:
Запустите скрипт чата из python (например,
python chat.py
), а затем укажите в браузереhttp://localhost:8080
что-то вродеPython, 442
Этот на самом деле приятно использовать. Это гольф, поэтому я считаю это менее удовлетворительным решением. Теперь я использую iframe и форму с обработкой клавиш ... и мета-обновлением для опроса нового контента.
источник
http://localhost:8080/c
и получить доступ к вашему HTTP-серверу8080
, вы можете добавить следующее, чтобы использовать другой порт:S.config.update({'server.socket_port':8090})
Метеор: 575 символов
Мне было очень весело с этим! Приложение работает по адресу http://cgchat.meteor.com/ .
chat.html: 171 символов
lib / chat.js: 45 символов
client / client.js: 359 символов
источник
Узел / Метеор JavaScript + HTML + CSS + веб-сокет: 1,105 байт
Вот один из них, использующий node.js / meteor . Очевидно написано в js, в реальном времени и с использованием веб-сокетов. Использует встроенные в метеор пакеты по умолчанию.
Это может быть намного меньше. Кроме того, он постоянен благодаря включенному монго (не то, чтобы это было хорошо).
Рабочий скриншот:
Для выполнения установите Метеор.
Linux:
Windows: win.meteor.com
Клонируйте мой репо и выполните метеорит:
укажите ваш браузер на localhost: 3000
chat.js: 703 байта (клиент / сервер):
chat.css: 132 байта
chat.html: 270 байт
источник
chat.html
кажется, имеет только 254 байта. Обратите внимание, что браузеры не очень требовательны - я не пытаюсь закрывать теги, и вам определенно не нужна косая черта в конце тегов (если это не требуется узлу?). Кроме того, убейте больше пробелов! Я вижу пару в javascript, и слишком много в html.