Как получить надежные HTTP-сообщения через Firefox XPCOM в Javascript - PullRequest
1 голос
/ 16 сентября 2008

Я пытаюсь запрограммировать небольшой сервер + клиент в Javascript на Firefox, используя XPCOM.

Чтобы получить HTTP-сообщение в Javascript, я использую интерфейс nsIScriptableInputStream. Этот чертов компонент с помощью метода read () случайно вырезал сообщение, и я не могу сделать его надежным.

Кто-нибудь знает решение для надежного получения информации? (Я уже пробовал двоичный поток, тот же сбой.)

J.

Ответы [ 2 ]

1 голос
/ 16 сентября 2008

У меня была та же проблема с ненадежностью ... В итоге я использовал XMLHTTPRequest, который при использовании из компонента XPCOM может выполнять межсайтовые запросы. Вторая часть docs подробно описывает, как создать версию XPCOM.

Если вы хотите обслужить HTTP-запрос, я взгляну на исходный код POW и использование серверных сокетов , которые реализуют базовый HTTP-сервер на JavaScript , Также проверьте httpd.js

0 голосов
/ 16 сентября 2008

Если вы управляете протоколом (то есть и клиентом, и сервером), я настоятельно рекомендую использовать Javascript / JSON для ваших сообщений от сервера к клиенту. Клиент может открыть поток либо путем динамического добавления тега в DOM. Затем сервер может отправить поток команд Javascript, таких как:

receiveMsg({type:"text", content:"this is my message"});

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

Даже если вы работаете с существующим протоколом HTTP и не можете использовать JSON, есть ли какая-то причина, по которой вы не можете использовать XMLHttpRequest? Я ожидаю, что он будет более стабильным, чем какой-либо плохо документированный интерфейс XPCOM для Firefox.

- Chouser

...