JavaScript специально запрещает делать «необработанные сокетные соединения», которые сделали бы это возможным. JavaScript может получить доступ только к HTTP, FTP или (редко) к некоторым другим протоколам только для получения ресурсов.
(Обратите внимание, что функции потоковых сокетов в WebSockets изначально основаны на выполнении HTTP-рукопожатия, а затем переходят в режим «почти необработанных» сокетов; но это было разработано для преднамеренного предотвращения подключения к произвольным службам. Один из опасений заключался в том, что что, например, спамер может захватить веб-браузеры для подключения к SMTP-серверам и пересылать почту, используя машины случайных пользователей в качестве трамплинов.)
Однако расширения Firefox могут получать доступ к слою XPCOM (XUL) - через систему JSLib. В частности, класс сокета находится здесь: http://www.mozdev.org/source/browse/jslib/libraries/network/socket.js?annotate=1.6
Это выглядит как довольно хороший асинхронный интерфейс, похожий на цикл select
/ read
, который вы можете использовать в однопоточной реализации C-сервера. (Помните, что JavaScript все однопоточные ...)
В качестве альтернативы, хотя и немного менее переносимо (в современном мире), вы можете загрузить Java-апплет с вашим кодом, но:
- апплетам запрещено подключаться к произвольным системам без специальных разрешений, которые я не знаю, как / если XPI может предоставить;
- у многих пользователей Firefox не установлена Java; он даже недоступен на некоторых платформах, на которых работает Firefox.