I test with gloox using inbandbytestream to transfer file; seems not working.
Does anyone has experience on that?
Or recommend a public XMPP that would support IBB?
Thanks.
IBB does not need any server side support. So I see no reason why IBB should not work on the GTalk servers.
Related
I want to make a sort of chat server between my desktop and my laptop using sockets. Does anybody know of a good tutorial on this or if you have any files with comments on it that I can use as reference?
This could be good at the beginning of your adventure:
https://medium.com/swlh/lets-write-a-chat-app-in-python-f6783a9ac170
I need to transfer files to a user connected to a XMPP Server.
The file transfer is supported by Spring Integration XMPP? (The current release version is 4.1.6-RELEASE, the snapshot is 4.2.0-SNAPSHOT).
I succesfully send text messages using the XMPP Message Outbound Gateway using a configuration like this:
<int-xmpp:outbound-channel-adapter id="outboundEventAdapter"
channel="outboundEventChannel"
xmpp-connection="testConnection"/>
Using this Outbound Gateway I'm not able to send files (only String and org.jivesoftware.smack.packet.Message payloads are supported)
Thanks in advance.
Massimo
The Spring Integration XMPP module is fully based on the Smack library, so I'd be glad to hear from you or from anybody else who confirm and show us how to do that with Smack first of all.
And only after that we will be able to come with some adaptation from our perspective.
Please, refer to Smack XMPP File Transfer for more information.
From other side if you are able to come up with some solution on the matter you always can wrap it to the standard <int:service-activator> to make your application working.
Does XMPP has more advantaces agains SignalR? They both using http long polling mechanism and I can not decide shall I use XMPP for my chat aplication or shall I use SignalR and keep everything ion my IIS server?
SignalR uses several transports see the explanation here How SignalR works internally?. Advantages of XMPP are the fact that greater number of other clients that just work out of the box (gchat, pidgin etc). But you could use both for your application if you wanted.
SignalR has a pile of ways for real time communication. WebSocket!! have you not heared about it? SignalR only use long pooling when nothing else is availabe on your old computer.
I am working on a project of P2P instant messenger, like ichat, but just for LAN.
I use jmdns library for service discovering, and test with pidgin and log in as a Bonjour user. as so far,the service _presence._tcp.local. is well discovered,
then we know the user's information in LAN like name#host:port, so how to start a conversation with Bonjour client ?
I looked into XMPP, but it do not support P2P, but I can hardly find the library for the extension jingle which supports P2P.
maybe I should use SIP to make a conversation? but the packet format is compatible with Bonjour ? or I have to study the structure of packet exchanged?
Can anyone explain a little about how does ichat work for LAN?
Many thanks for your kind help!
I think you're a little confused.
Bonjour is a mechanism for finding a service. It is not for communicating with a service. Once you have found the name#host:port information, you are finished with Bonjour.
The next step will require you to talk a protocol that the service understands. The token _presence in the service string indicates that this is an XMPP service. You will need to talk XMPP to it. You cannot talk SIP to it. Have you tried opening an XMPP connection to the host and port you have found?
You talk about SIP and Jingle. These are used to set up an audio or video call. If you are writing an instant messaging program, you do not need to do this. XMPP alone is enough.
If you do want to support audio or video, then you will need one of those protocols. Because the service you have found is an XMPP service, you will need to use Jingle. If you don't have a library that can speak Jingle, you will have to write the code yourself. There is nothing in the Bonjour information that identifies a SIP service, so you cannot use SIP - unless you can make a different Bonjour query and find a SIP service.
I infer that you are working in Java. The most popular XMPP library for Java seems to be Smack.
Thanks for everybody's attention, now I have found something. XMPP doesn't support P2P mode, only supports clients-server-clients. but there is another standard "XEP-0174: Serverless Messaging" which is right for p2p chat in local network. DNS-SD + XEP-0174 , ichat works in this way.
as I used smack library, it do not support p2P; but someone did some changes, here is the link
http://issues.igniterealtime.org/browse/SMACK-262 .
I didn't try this XMPPLLConnection, I have looked into the source code of smack, it is based on socket connection. unfortunately there is not any java library for XEP-1074, so I have to work on xml stream over socket.
You may use SIP for that. MDNS will be your discovery mechanism, then you'd use plain SIP for calling, one you learned the URI you wish to dial.
SIPSIMPLE SDK (http://sipsimpleclient.com) implements this feature by sing this expired draft: https://datatracker.ietf.org/doc/html/draft-lee-sip-dns-sd-uri-03 it could be a good start.
Basically your client would generate a URI like sip:random_stuff#ip:port and then publish it along with a display name by using MDNS. The application also browses MDNS for peers on the LAN: _sipuri._udp for example. Once you get some URI you can just dial using SIP.
Google GTalk clients (web, android, windows) have great ability to suck conversation history from server, even though conversations were done an another jabber client.
What jabber (XMPP) functionality (XEP) is used for that or is it some custom thing?
Why no other XMPP client (non Google) has this ability?
P.S. It is programming question, because I am asking about specific XMPP functionality.
It is possible that this is done using message archiving. See XEP-0136: http://xmpp.org/extensions/xep-0136.html
(And with regard to the other answer, this is supported by ejabberd: http://www.ejabberd.im/mod_archive)
Its a property of XMPP server not XMPP/Jabber client. All conversation happens through XMPP Server. So If server wants it can store all the history. As far as I know there is no open source XMPP server which can store history.
Google has it all.
I am not sure, but I think there is no specific XEP for storing history on server.
Server side XEP-0136 (message archiving) can be done with ejabberd + mod_archive (mod_archive_odbc variant with sql backend, for better perfomance) or with openfire server with open archive plugin.
Client side, for XEP-0136 I use vacuum im, http://code.google.com/p/vacuum-im/ , it's open-source and cross platform.