xmppo / node-xmpp-bosh Goto Github PK
View Code? Open in Web Editor NEWAn XMPP BOSH & WebSocket server (connection manager) written on node.js using Javascript
Home Page: https://github.com/xmppo/node-xmpp-bosh
An XMPP BOSH & WebSocket server (connection manager) written on node.js using Javascript
Home Page: https://github.com/xmppo/node-xmpp-bosh
I did some modifications in my forked project, but they're all dirty hack. So, maybe @dhruvbird can support them officially ?
What I modified:
What steps will reproduce the problem?
What is the expected output? What do you see instead?
Expected output: Connection to the server
Output: Connects to node-xmpp-bosh server and node-xmpp-bosh can't conenct to the XMPP server.
How to solve it?
Change the default port to 5223.
What version of the product are you using? On what operating system?
Version node-xmpp-bosh 0.5.6 (npm installation)
Ubuntu 11.10
Please provide any additional information below.
It seems to ignore port information passed by pidgin and to always use default port.
Here is my log:
<body rid='7905790180136' xmlns='http://jabber.org/protocol/httpbind' type='terminate'><presence xmlns='jabber:client' type='unavailable'/></body>
strophe.js?t (line 2188)
<body xmlns='http://jabber.org/protocol/httpbind' condition='item-not-found' message='Invalid session ID' type='terminate'/>
I connect fine with the same code to a punjab server which is a free testing service provided by Jack Motiff.
Connecting to this free testing server http://bosh.metajack.im:5280/xmpp-httpbind' I have no problems. Any help would be great thank you.
HI
As I see in http://xmpp.org/extensions/xep-0206.html (2. Wrapper Element) first point says:
If the BOSH wrapper is not empty, then it SHOULD contain one of the following:
but we have:
DIGEST-MD5/stream:featureswithout xmlns:stream in body and one of our client failed to pasre xml :(
or I missing somethig?...
Thx
Current default is 80 chars. Set it to something bigger (such as 200 bytes) or maybe deduce it based on the logging level.
Another option would be to read it in from the config file/command line.
Hi, it seems with v0.6.0 I can no longer authenticate with the XMPP server (I'm using ejabberd). Here is the log:
+----------------------------------------------------------------------------------------------------------------+
| Starting WEBSOCKET DRAFT 10 server 'v0.6.0' on ws://0.0.0.0:5280' at 'Fri Feb 17 2012 10:35:42 GMT+0000 (GMT)' |
+----------------------------------------------------------------------------------------------------------------+
[2012-02-17 10:35:50.702] [INFO] [http-server.js] - RECD: <body xmlns="http://jabber.org/protocol/httpbind" content="text/xml charset=utf-8" rid="9487908443" xml:lang="en" hold="1" to="abc.com" xmlns:xmpp="urn:xmpp:xbosh" xmpp:version="1.0" wait="60" route="xmpp:my.jabber.server:5222"/>
[2012-02-17 10:35:50.710] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a Sent: <stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="abc.com" version="1.0">
[2012-02-17 10:35:50.713] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a _on_data RECD: <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='3344545251' from='abc.com' version='1.0' xml:lang='en'><stream:features><starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>SCRAM-SHA-1</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism></mechanisms></stream:features>
[2012-02-17 10:35:50.714] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a _on_stanza parsed: <stream:features><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>SCRAM-SHA-1</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism></mechanisms></stream:features>
[2012-02-17 10:35:50.715] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a Sent: <starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
[2012-02-17 10:35:50.715] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a _on_data RECD: <proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
[2012-02-17 10:35:50.717] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a _on_stanza parsed: <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
[2012-02-17 10:35:50.749] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a Sent: <stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="abc.com" version="1.0">
[2012-02-17 10:35:50.750] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a _on_data RECD: <?xml version='1.0'?><stream:stream xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='2692183849' from='abc.com' version='1.0' xml:lang='en'><stream:features><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>SCRAM-SHA-1</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>PLAIN</mechanism></mechanisms></stream:features>
[2012-02-17 10:35:50.751] [ERROR] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a _on_stream_error - will terminate: undefined
[2012-02-17 10:35:50.751] [INFO] [xmpp-proxy.js] - fef2a90b-72bd-4754-8be7-ddd32ad9b0a3 9adb3ccc-9adb-4b1b-8033-6c5ac76a5c9a Sent: </stream:stream>
[2012-02-17 10:35:50.753] [INFO] [response.js] - SENT: <body xmlns="http://jabber.org/protocol/httpbind" type="terminate"/>
It works with v0.5.6, so I assume this is a new bug. For some reason it thinks there is a stream error, but it looks fine to me?
I want to login to my gtalk.. by using pidgin/adium?
How to I make use of https://bind.jappix.com/ ?
I'm try to start bosh service in many ways (from source, from npm, etc) ... and I always get this error:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object # has no method 'consoleAppender'
at Object. (/Users/max/projetos/node-xmpp-bosh/src/log.js:7:23)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:31)
at Function._load (module.js:308:12)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at Object. (/Users/max/projetos/node-xmpp-bosh/src/dutil.js:563:30)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
Step to reproduce:
npm install node-xmpp-bosh
./run-server,js
I didn't have the time to look at it yet but since it looks critical I report the problem.
Whenever I try to set a config, because I want to change the libpurple setting, I get
oot@epimetheus:~/.nvm/v0.4.7/lib# node node_modules/node-xmpp-bosh/run-server.js --config 'bosh.js.conf' Caught Exception: 'Error: Cannot find module './true'' while trying to read config file './true'
I have tried it with basically every different string combination
I am trying to connect to a TLS server on port 5223, using old style ssl.
Connect Server: chat.na1.lol.riotgames.com
I don't know if this is an issue or not, but it always says bosh terminated the connection
node-xmpp-bosh parses and sends only <stream:stream>
elements that are closed.
Jack Moffitt's draft however specifies:
The stream tag MUST NOT be closed (i.e. the closing
</stream:stream>
tag should not appear in the message) as it is the start of the client's outgoing XML.
You may need to apply some weird string magic if you insist on DOM parsing.
Affects 0.5.X (maybe 0.6) + nodejs 0.4.7
Everything is fine using POST, but with GET:
node.js:134
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object # has no method 'setHeader'
at Object.send_response (/usr/local/lib/node_modules/node-xmpp-bosh/src/response.js:72:19)
at Object._send_no_requeue (/usr/local/lib/node_modules/node-xmpp-bosh/src/session.js:855:12)
at Object._pop_and_send (/usr/local/lib/node_modules/node-xmpp-bosh/src/session.js:759:18)
at Array. (/usr/local/lib/node_modules/node-xmpp-bosh/src/session.js:787:22)
at EventEmitter._tickCallback (node.js:126:26)
shisp@ubuntu:~$
I'm trying to run node-xmpp-bosh on nodejitsu. After deploying it to nodejitsu I see the "Starting BOSH server" and "Starting WEBSOCKET server" messages on the log file. But the server doesn't seem to be running - http-bind/ gives a broken link.
The deployed app starts with run-server.js. Is this the correct way to start the BOSH server?
is there any other way I can run node-xmpp-bosh on a public server - I want to test it out on a free service like nodejitsu or CloudFoundry.
Follow up https://code.google.com/p/node-xmpp-bosh/issues/detail?id=37
http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76
Hixie draft 76 is old and deprecated, but still in use by Safari and Opera.
I made logging jsjac to node-xmpp-bosh and get interesting situation
please see next link http://pastebin.com/GT1A1Mdk
after
<body xmlns="http://jabber.org/protocol/httpbind" condition="item-not-found" message="Invalid session ID" type="terminate"/>
client continue pings and seems works...
Is there any option in config to restrict route="xmpp:domain:port"?
HI
As I see in http://xmpp.org/extensions/xep-0206.html (2. Wrapper Element) point 2 says:
If the BOSH wrapper is not empty, then it SHOULD contain one of the following:
but we have http://pastebin.com/8D7GTsa2
without xmlns:stream in body and one of our client failed to pasre xml :(
or I missing somethig?...
Thx
I found a bug yesterday, https://github.com/dhruvbird/node-xmpp-bosh/blob/master/src/session.js#L975 always evaluates to false. No, reports are ever sent -- since node.attrs.ack is not an integer.
Specified as a direct translation of the TCP protocol, my WebSocket implementation relies on that detail. :-(
Here's some sample output of my client:
>> <stream:stream xmlns="jabber:client" version="1.0" to="example.com">
<< <stream:stream xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0" xml:lang="en" from="example.com">
<< <stream:features xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>SCRAM-SHA-1</mechanism></mechanisms><c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.process-one.net/en/ejabberd/" ver="o8zQAtrb2wELMmZizvbnpvqp5cE="/><register xmlns="http://jabber.org/features/iq-register"/></stream:features>
>> <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="DIGEST-MD5"></auth>
<< <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">bm9uY2U9IjI3NzU0MDYxMjciLHFvcD0iYXV0aCIsY2hhcnNldD11dGYtOCxhbGdvcml0aG09bWQ1LXNlc3M=</challenge>
>> <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9ImNvbGxlY3RvciIscmVhbG09ImphYmJlci5jY2MuZGUiLG5vbmNlPSIyNzc1NDA2MTI3Iixjbm9uY2U9Ijc3MTM6NTk5IixuYz0iMDAwMDAwMDEiLHFvcD0iYXV0aCIsZGlnZXN0LXVyaT0ieG1wcC9qYWJiZXIuY2NjLmRlIixyZXNwb25zZT0iZGY3MWM3ZDM4OTJmODAwZGU3MTIxNjEzMTBiNDUyYTAiLGF1dGh6aWQ9ImNvbGxlY3RvckBqYWJiZXIuY2NjLmRlIixjaGFyc2V0PSJ1dGYtOCI=</response>
<< <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">cnNwYXV0aD1lYWQ1NDU4MTAzNDc5NjUwNGE2MjA0OGVlOGNlOTliZA==</challenge>
>> <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl"></response>
<< <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"/>
# At this point I reset my parser, does node-xmpp-bosh do the same?
>> <stream:stream xmlns="jabber:client" version="1.0" to="example.com">
<< <stream:features xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/><c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="http://www.process-one.net/en/ejabberd/" ver="o8zQAtrb2wELMmZizvbnpvqp5cE="/><register xmlns="http://jabber.org/features/iq-register"/></stream:features>
>> <iq type="set" id="bind"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/></iq>
<< <iq id="bind" type="result" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>[email protected]/18674533551332549886610980</jid></bind></iq>
Error: junk after document element
The output from jslint is not displayed on the screen for some reason (when using monitor.js).
https://github.com/robrighter/node-xml
This allows anyone to use it (independent of platform) since node-xml is pure javascript (no C-bindings to libexpat1).
However, this comes at a cost:
This mode would be discouraged, but hopefully supported some time in the future.
I noticed that when there is a resource conflict, node-xmpp-bosh doesn't include a type="terminate" on the body element.
<body xmlns="http://jabber.org/protocol/httpbind" stream="0d45874e-5fd1-4cdc-a4b7-f94d4f0ca763">
<stream:error xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
<conflict xmlns="urn:ietf:params:xml:ns:xmpp-streams"/>
<text xml:lang="" xmlns="urn:ietf:params:xml:ns:xmpp-streams">Replaced by new connection</text>
</stream:error>
</body>
When testing against ejabberd, it does include type="terminate", and I think this is the correct behaviour after looking at http://xmpp.org/extensions/xep-0206.html#remote-stream-error
This isn't a bug but more of a feature request/question. Is it possible to update node-xmpp-bosh on the fly without having to restart it?
I received warning:
[email protected] install /home/sklyar/node_modules/node-xmpp-bosh/node_modules/jsdom/node_modules/contextify
node-gyp rebuild
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module '/usr/lib/nodejs/npm/node_modules/node-gyp/bin/node-gyp.js'
at Function._resolveFilename (module.js:332:11)
at Function._load (module.js:279:25)
at Array.0 (module.js:479:10)
at EventEmitter._tickCallback (node.js:192:40)
npm WARN optional dependency failed, continuing [email protected]
Is it problem?
I have the BOSH server running on nodejitsu, with a strophe client. I am trying to authenticate a user for Facebook chat using the X-FACEBOOK-PLATFORM. I have also added 'chat.facebook.com' to the no-TLS list in the conf file.
But, when chat.facebook.com offers the choice between DIGEST-MD5 and X-FACEBOOK-PLATFORM, the app defaults to DIGEST-MD5.
Is this an issue with node-xmpp-bosh or nodejitsu? Is there a way to solve this?
I have tested the strophe client with PunJab and X-FACEBOOK-PLATFORM does work.
Hi.
When I run the command to start the bosh server, I receive the following:
root@jappix:# /etc/init.d/bosh restart# node: no process found
Restarting bosh serverStopping bosh server.
Starting bosh server.
.
root@jappix:
Checking the error log, I find the following error:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: Object # has no method 'consoleAppender'
at Object. (/usr/local/lib/node_modules/node-xmpp-bosh/src/log.js:7:23)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
at Module.load (module.js:348:32)
at Function._load (module.js:308:12)
at Module.require (module.js:354:17)
at require (module.js:370:17)
at Object. (/usr/local/lib/node_modules/node-xmpp-bosh/src/dutil.js:534:30)
at Module._compile (module.js:441:26)
at Object..js (module.js:459:10)
Been checking for a fix for some time now, any help would be appreciated.
Thanks.
Hello,
I don't report a bug. I only have two questions.
1/ How to run in https instead of http ?
2/ How to allow external connection ? I mean allow other web servers to use my BOSH server.
This both case like https://bind.jappix.com/
Thanks.
Follow up #24
The handshake should be refused if the client doesn't send the xmpp sub protocol as described in
http://tools.ietf.org/id/draft-moffitt-xmpp-over-websocket-00.html#anchor3
Hi,
If I have 2 attached tabs (chrome) with Strophe.attache ... shouldn't node-xmpp-bosh broadcast all messages sending by tab 1 to tab 2? To keep in sync?
I deployed my Node.js app to EC2.
On my local server, BOSH host was configured to example.dev, and now after deployment it sits on subdomain.example.com (the entire node app sits on the subdomain) and since then I get this error:
Error: ERROR on listener at endpoint: http://subdomain.example.com:5280/^\/http-bind(\/+)?$/
at Server. (/var/www/subdomain.example.com/nodechat/src/bosh.js:1874:10)
at Server.emit (events.js:67:17)
at Array.0 (net.js:732:14)
at EventEmitter._tickCallback (node.js:192:41)
What am I doing wrong?
How can I trace the issue behind this?
Thank you,
One of php jabber-client use SimpleXML class to build xmpp stanza and SimpleXMLElement::asXML() function to get result string, but always return preambula <?xml version='1.0'?> at begin
and in node-xmpp-bosh next construction not working properly
<dummy><?xml version='1.0'?><bla>bla</bla></dummy>
because dummy is not valid xml element, and that is why developers make dirty hack with
s = substr(s, strlen('<?xml version='1.0'?>');
but ejabberd_http_bind hasn't such trouble
So... What do you think about?
Probably _on_data() & _on_stanza() should update a counter and maintain the buffer under max_xmpp_buffer_size.
Just had one of my bosh servers die with this error:
/usr/lib/nodejs/node-xmpp-bosh/src/session.js:807
this.pending_bosh_responses[stream.name].push(attrs);
^
TypeError: Cannot call method 'push' of undefined
at Object.enqueue_bosh_response (/usr/lib/nodejs/node-xmpp-bosh/src/session.js:807:50)
at Object.send_stream_terminate_response (/usr/lib/nodejs/node-xmpp-bosh/src/stream.js:79:17)
at /usr/lib/nodejs/node-xmpp-bosh/src/session.js:633:24
at Array.forEach (native)
at Object.handle_client_stream_terminate_request (/usr/lib/nodejs/node-xmpp-bosh/src/session.js:625:30)
at Object._process_one_request (/usr/lib/nodejs/node-xmpp-bosh/src/session.js:276:18)
at Object.process_requests (/usr/lib/nodejs/node-xmpp-bosh/src/session.js:320:22)
at process_bosh_request (/usr/lib/nodejs/node-xmpp-bosh/src/bosh.js:182:25)
at bosh_request_handler (/usr/lib/nodejs/node-xmpp-bosh/src/bosh.js:237:9)
at /usr/lib/nodejs/node-xmpp-bosh/src/http-server.js:69:17
I assume the pending_bosh_responses[stream.name] array hasn't been initialised for some reason. I've temporarily fixed this by checking if it's undefined just before push is called on it, and initialising it if so, but there is probably a better fix.
node-xmpp-bosh 0.5.6
nodejs 0.6.8
CentOS 5.7
Refer to the FIXMEs mentioned in 9921051
Make the HTTPServer() constructor function take in a hash-map so that the parameters are self documenting. Currently, the long string of parameters makes it hard to see what each one does.
Also, maybe "http" to something else in bosh.js since it might be misinterpreted to be the node.js default http module.
Investigate using http://typedjs.com/
[2012-04-06 13:49:09.235] [ERROR] [xmpp-proxy.js] - 30f0d096-0078-4a7c-b6e2-05d684f37a58 363a37cf-6e8e-461c-829d-b3899ef197f4 _on_stream_error - will terminate: undefined entity
and such xml
<message from='one@chat' to='two@chat' type='chat'><body>salut à tous, on peut chatter un peu ?</body></message>
we can see - expat parse() failed, but why?... if expat doesn't known entity agrave it doesn't mean session must terminate, imho
what do you think?
As discussed. Ensue that all cases are handled correctly. Currently, a tag with a randomly chosen name is opened and closed so that the attacker may not be able to guess the tag name.
something wrong with jsjac or node-xmpp-bosh
I try
strophe - node-xmpp-bosh - it works
jsjack - (http://bosh.metajack.im:5280/xmpp-httpbind) - it works
jsjack - node-xmpp-bosh - doesn't work
node_modules/node-xmpp-bosh/src/log.js:7
var appender = log4js.consoleAppender(log4js.basicLayout);
^
TypeError: Object # has no method 'consoleAppender'
at Object. (/home/user/project/node_modules/node-xmpp-bosh/src/log.js:7:23)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object. (/home/user/project/node_modules/node-xmpp-bosh/src/dutil.js:534:30)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
I was able to successfully compile node-xmpp-bosh
npm version is 1.1.21
node version is 0.6.18
node-xmpp-bosh is 0.6.1 with package.json "log4js": "= 0.4.2"
Do I need Prosody or openfire when I have node-xmpp-bosh up & running. As I need to have user authentication who will access the Jappix Mini.
If your answer is yes for above question, I am using prosody which uses 5280... how should I configure both so that jappix mini <---> node-xmpp-bosh <----> prosody / Openfire. Please provide some more details here. I have both node-xmpp-bosh & prosody or openfire on same server. Here Jappix mini code is on my websites otherservers.
Node-xmpp-bosh works fine on IE9, Firefox & chrome [ shows message text as Bidirectional-streams Over Synchronous HTTP ] however on IE7 it gives message as getting file information when I type http://url:5280/http-bind
Thanks
Hello,
After upgrading from 0.3.1 to the latest 0.6.1 I noticed the JSON GET handler was broken, the browser says that a variable has no end as an error.
Some Jappix users, using NXB as we recommend them, were posting about that in our issues, at first thought it was coming from us, but I tried myself to upgrade node-xmpp-bosh and noticed that also.
Cheers ;)
I received such body if user open chat with same resource
<body xmlns="http://jabber.org/protocol/httpbind" stream="3a59e76d-8e39-40f8-aa7d-f5ea22cefed0"><stream:error xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"><conflict xmlns="urn:ietf:params:xml:ns:xmpp-streams"/><text xml:lang="" xmlns="urn:ietf:params:xml:ns:xmpp-streams">Replaced by new connection</text></stream:error></body>
But I waiting for terminate in type attribute of body tag...
When I am wrong? And how to detect such situation?
Thx
Hi,
Is there a way to send a notification to clients without going through my xmpp server? that is, use it as a normal channel service like fayer or socket.io
Explaining: I have a webchat that use prosody with node-xmpp-bosh, but I'd like to send notifications (from main server) to users like "your photo received a new comment". I know that I could use prosody for this, but maybe it is more simple just use node-xmpp-bosh.
is it possible?
Hi.
I was using node-xmpp-bosh server with Strophe-1.0.2 library on client side. Generally it was working OK but there was one issue: after some time the connection to node-xmpp-bosh server is lost and client doesn't know about that. So messages didn't transfer to the target and client's contact became offline(from target's point of view) too.
I found the thread where similar problem was discussed and solved: http://groups.google.com/group/strophe/browse_thread/thread/411e17f93859d915 . I used this Strophe plugin https://github.com/zanchin/strophejs/blob/master/plugins/plugin.cm.js and eventually messages transferring became reliable. But this lead to another problem - server's PC goes out of memory after ~5 hours of work and the only way to fix this is restart bosh server.
I also noticed that after integrating that Strophe plugin the numbers at "X/Y active sessions" are growing faster. Typycally I have 10-12 active sessions (simultaneously connected clients) and Y number is growing very fast. E.g. like +10 used sessions per 5 minutes.
So it looks like aggressive connection manager plugin which I took from https://github.com/zanchin/strophejs/blob/master/plugins/plugin.cm.js is breaking node-xmpp-bosh server.
I'm not a JavaScript expert, my level of knowledge rather very low. I'm just trying to use existing solution and I would be very happy if you can help me with that.
Please let me know if I can help you with solving this issue in any way.
Thanks,
Andrey.
We need more information and configurability in logging. For example display the current function name, constructor, and line number while logging.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.