简体   繁体   中英

How to get reliable HTTP messages via Firefox XPCOM in Javascript

I am trying to program a small server+client in Javascript on Firefox, using XPCOM.

To get the HTTP message in Javascript, I am using the nsIScriptableInputStream interface. This f**ing component through the read() method randomly cut the message and I cannot make it reliable.

Is anybody know a solution to get reliably the information? (I already tried a binary stream, same failure.)

J.

I had the same problem with unreliability... I ended up using XMLHTTPRequest, which when used from the XPCOM component can do cross site requests. The second part of the docs detail how to instantiate the XPCOM version.

If you're looking to serve HTTP request I'd take a look at the POW source code and the use of server sockets , which implements a basic HTTP server in JavaScript. Also check out httpd.js

If you control the protocol (that is, both the client and server) I would highly recommend using Javascript/JSON for your server-to-client messages. The client can open a stream either via dynamically adding a <script> tag to the DOM. The server can then send a stream of Javascript commands like:

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

Then the client just needs to define a receiveMsg function. This allows you to rely on fast browser code to parse the message and determine where the end of each message is, at which point it will call your handler for you.

Even if you're working with an existing HTTP protocol and can't use JSON, is there some reason you can't use XMLHttpRequest? I would expect it to be more stable than some poorly documented Firefox-specific XPCOM interface.

--Chouser

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM