не http в mochiweb - PullRequest
       48

не http в mochiweb

0 голосов
/ 17 августа 2011

Я использую mochiweb для сервера, который также может получить соединение TCP, на которое клиент отправляет простую строку (без перевода строки строка не http). Mochiweb использует HTTP-сокеты и поэтому не может обнаружить это (я даже не получаю http_error, что я могу легко получить в mochiweb). Как я могу решить это? В идеале я хочу изменить код mochiweb на setopt({packet, http_or_raw}), но такого не существует. Как бы вы порекомендовали справиться с этим? моя текущая идея состояла в том, чтобы изменить mochiweb и использовать erlang:decode_packet, есть ли лучший подход?

EDIT:

Подробнее. Наш сервер является сервисом веб-сокетов. Мы хотим разрешить люди без поддержки браузера, чтобы использовать его, поэтому мы используем Flash-объект, чтобы сделать websocket, когда браузер не может. Флэш-объект должен получить файл политики флеш-памяти. вспышка заставляет файл находиться в одном из двух мест: - порт 843 (флэш-код) - порт службы ws Протокол флэш-памяти НЕ основан на HTTP. Amazon ELB не позволяет переадресацию портов для большинство портов ниже 1024, поэтому мы реализовал флеш сервер в том же порту через патч к мотиевеб (https://github.com/nivertech/mochiweb/tree/ori_flash_170811).

Любой совет?

1 Ответ

0 голосов
/ 18 августа 2011

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

Если бы я действительно хотел сделать то, что ты хочешь сделать, я бы скопировал mochiweb_http.erl на другое имя (например, иногда_not_http.erl) и внести соответствующие изменения в loop / 2 и request / 2… затем вместо добавив mochiweb_http к своему руководителю, вы бы добавили иногда Нет необходимости или рекомендуется вносить изменения в mochiweb на месте.

...