Instant messaging server. Backend in pure Go (license GPL 3.0), custom client-side binding in Java and Javascript, as well as gRPC client support for C++, C#, Go, Java, Node, PHP, Python, Ruby, Objective-C (license Apache 2.0). Wire transport is JSON over websocket (long polling is also available) for custom bindings, or protobuf over plain TCP for gRPC. Persistent storage RethinkDB and MySQL. A third-party DynamoDB adapter also exists. Other databases can be supported by writing custom adapters.
Instant messaging (IM) technology is a type of online chat that offers real-time text transmission over the Internet.A LAN messenger operates in a similar way over a local area network.Short messages are typically transmitted between two parties, when each user chooses to complete a thought and select 'send'.
Tinode is not XMPP/Jabber. It is not compatible with XMPP. It's meant as a replacement for XMPP. On the surface it's a lot like open source WhatsApp or Telegram.
Version 0.15. This is beta-quality software: feature-complete but probably with a few bugs. Follow instructions to install and run. Read API documentation.
Why?
The promise of XMPP was to deliver federated instant messaging: anyone would be able to spin up an IM server capable of exchanging messages with any other XMPP server in the world. Unfortunately XMPP never delivered on this promise. Instant messengers are still a bunch of incompatible walled gardens, similar to what AoL of the late 1990s was to the open Internet.
The goal of this project is to actually deliver on XMPP's original vision: create a modern open platform for federated instant messaging with emphasis on mobile communication. A secondary goal is to create a decentralized IM platform which is much harder to track and block by the governments.
Getting support
DemoWeb
TinodeWeb, a single page web app, is usually available at https://api.tinode.co/ (source).
Login as one of
alice , bob , carol , dave , frank . Password is <login>123 , e.g. login for alice is alice123 . You can discover other users by email or phone by prefixing them with email: or tel: respectively. Emails are <login>@example.com , e.g. [email protected] , phones are 17025550001 through 17025550009 .
If you register a new account you are asked for an email address to send validation code to. For demo purposes you may use
123456 as a universal validation code. The code you get in the email is also valid.
Docker images with the same demo are available.
Android
Tindroid is stable and functional. See screenshots below. A debug APK is provided for convenience.
Command Line
A text-only command line client implements every possible command.
Notes
FeaturesSupported
Planned
Other
Demo avatars and some other graphics are from https://www.pexels.com/ under CC0 license.
Background patterns from http://subtlepatterns.com/, commercial and non-commercial use allowed with attribution.
ScreenshotsAndroidDesktop WebMobile WebSEO Strings
Words 'chat' and 'instant messaging' in Chinese, Russian, Persian and a few other languages.
reader comments90 with 54 posters participating, including story author
For the past few years, I've run my own XMPP-based instant messaging server. It's an incredibly convenient way for my wife and I to send links back and forth to each other while we're on our computers, and I very much like the idea of not having to depend on a third party for the exchange of simple messages. Not that Google is going to mine a lot of useful data out of our instant messages anyway (though they would be able to tell that we like funny cat pictures)—still, the server has come in extremely handy on occasions in the past.
Getting the server application set up is quite easy, and even better, it works with any XMPP-compatible instant messaging application—Adium, Pidgin, Trillian, and just about anything else that can speak the open XMPP protocol.
The video below will walk through the process of setting up and installing Prosody, a lightweight Lua-based instant messaging server application. We'll be using Ubuntu 12.04 for our server, though Prosody is a cross-platform application and will run on Windows, OS X, and a number of different Linuxes. Strap in, grab your server, and let's roll!
For reference, the completed
prosody.cfg.lua file that I ended up with in the video is included below. You can dig into the Prosody docs for a deeper explanation of the configuration options.
If you want to be able to use your server over the Internet, you'll need to forward port 5222 to whatever machine you're running Prosody on (you can also forward port 5269 if you want other Prosody servers to be able to connect to yours, though this isn't necessary for a small setup).
The SSL/TLS options deserve a bit of explanation since they're not super-clear. The goal with the config above is to ensure that we're using TLS ciphers only and excluding older, less-secure SSL ciphers; to do this, we specify 'sslv23' in the protocol directive (which in spite of its name actually enables the whole range of SSL/TLS version support) and then disallow SSLv2 and SSLv3 in the options directive below that. The other SSL options are there to mimic Prosody's defaults.
Prosody has been functioning without issue for me for quite some time, and intra-house instant messaging without having to use Google or another third party is extremely convenient. Plus, if you couple your own IM server with OTR encryption on the IM client side, you'll be doing just about everything you can do to keep your communication private.
Listing image by Lee Hutchinson
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |