Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: A browser-based IRC client built on Node.js – first Node project (airchatter.net)
60 points by _redwire on June 12, 2014 | hide | past | favorite | 40 comments


Other browser-based irc clients written in nodejs:

KiwiIRC - Probably the most used of them. https://github.com/prawnsalad/KiwiIRC

Subway - I've been following this one for a bit because it look promising. It's nice. https://github.com/thedjpetersen/subway

nirc - This one is pretty simple and I'd say a little less polished than yours, but still does a lot of things right. https://github.com/cjstewart88/nirc

If anyone knows of others, I'm interested.

I'd also like to plug glowing-bear (https://glowing-bear.github.io/glowing-bear/) since it's a rather cool project. It's an entirely static html5 frontend to weechat.


Hi, some more:

Waartaa - new, written in Meteor, part of Google Summer of Code - https://github.com/waartaa/waartaa

gnotty - https://github.com/stephenmcd/gnotty

ircanywhere - https://github.com/ircanywhere/ircanywhere

WebIRC - https://github.com/pavben/WebIRC


It's not based on Node.js, but CIRC is worth mentioning because it's pure JS IRC client that doesn't need a relay server:

http://flackr.github.io/circ/ https://github.com/flackr/circ

It uses the chrome.socket APIs to connect directly to the IRC network.


And about a decade before that we had Chatzilla: http://en.wikipedia.org/wiki/ChatZilla



Oh, I've made one too! http://github.com/erming/shout

It's really stable (been using it for weeks without restarting) and I've even implemented a mobile interface: https://db.tt/fYTswBwO

You'll find the install instructions in the README (or just `npm install shout`). No configuration required. Should take under a minute to get it running if you already have NPM.

It's open source. Feel free to try it, browse the code and leave some feedback. If you want to work with me, it's open for contributions!


Looks really nice - especially the part where multiple networks are in the very first screenshot!

How are you handling persistence tho? Straight up in-memory storage?


Yes, right now it's only in memory.

I've been thinking about storing the logs in .txt-files (with the option to turn this feature on/off). This way, I could let the user download the logs directly via the browser.


I'm not familiar with how difficult it may be, so please tell me if I'm off base. But couldn't you offer the option for either text logs or HTML logs? I know that when given the option, I opt for HTML logs for the ease of reading.


Hi! Didn't see your question until now.

While I haven't implemented the logging yet, I'm thinking about storing them in the JSON-format. Messages are already stored as JavaScript object, so I think this is my best option. And exporting them as .txt on demand, shouldn't be a problem either.

Thank you for the feedback


Looks great! Would love text logs and support for multiple users each with their own config.


It might be a stretch to call it "world's most modern" IRC client when it looks like a pretty generic client.

I really think at some point the word modern just won't make sense in the same sentence as "IRC".

I think as your first node project it looks pretty cool though.


> It might be a stretch to call it "world's most modern" IRC client when it looks like a pretty generic client. Haha, I definitely agree. I'm just trying hard to pitch it to people who might be less familiar with other clients. The word "modern" means a lot to people, it turns out.

> I think as your first node project it looks pretty cool though. Thanks so much!


You might want to add two newlines instead of one for better readability in your comment.


@ _redwire

It'd be nice to see a functional demo site.

It'd also be nice to have a direct link to the github repository - https://github.com/redwire/aIRChat

Why zip instead of npm distribution?


Thanks for the suggestions! I used to have aIRChat running as a web service straight off the VPS hosting its official website, but I encountered a lot of trouble when people started connecting over it, as many IRC networks apparently limit the number of connections allowed from a single source. Having exceptions made for each network would have been a considerable challenge. There is a link to the repository under the "contributing" section of the main site, but you're definitely right that I should have something more obvious. I'll do that! I'm really not familiar with how NPM works, and I wanted to try to make the distribution as simple as possible for all users on all OSs, so I figured distributing everything the user needs in one package and providing an install script was the best I could do with my limited knowledge of package distribution. I'm definitely open to ideas about more convenient methods!


It's easy to publish a NPM package. First, create package.json by googling "package.json cheatsheet". Then type npm publish and you're done.


Looks like they do have a link in the footer (`Github` is linked):

    All of the source material is hosted on Github, and contributions of all kinds are welcome!


Any reason why airchatter.net and www.airchatter.net point to different IP's.

Also, your SSL is a little messy and you're vulnerable to Heartbleed: https://www.ssllabs.com/ssltest/analyze.html?d=airchatter.ne...


CCS != Heartbleed


Nice! We need to have better UX around getting connected to underlying IRC networks. How doe this compare to Subway [1]?

[1]: https://github.com/thedjpetersen/subway


OT: but I need something like this but a client that sits in the background. Basically like quassel-core but that thing is written in C++ and is a hassle to install and configure.


If you're open to a paid solution, IRCCloud is probably the most modern IRC client available today. It's $5/month, but nothing else I've used has come close in terms of general interface quality across all devices, from Android to my iPad to my desktop.

As interesting off-topic trivia, it was written in Erlang.


znc?


http://wiki.znc.in/ZNC

Looks like thus is c++ as well.


While not quite finished, there's also Slate (https://github.com/slate/slate) by Holowaychuk


I didn't know of an #https-everywhere channel. It doesn't seem to be on Freenode. Is it really an active channel or just there in the screenshot for the demo?


aIRChat doesn't categorize channels by server (I'm open to ideas of having it do so), for the sake of simply using Foundation's vertical tabs. #https-everywhere is the developer discussion channel on OFTC.


The problem with most IRC software is that they're not always online. The usual solution is irssi, which is what I've used for the last 6 years.


If you mean not always connected to IRC and that your solution is to run Irssi in a screen/tmux session on a server somewhere, it's considerably easier to use ZNC.

http://wiki.znc.in/ZNC


I don't remember trying ZNC, but the problem with all the irc bouncers I've used before was that it wasn't neatly integrated to the irc client. If you're using screen+irssi, everything works exactly like you would expect. With irc bouncers you have various issues, e.g. when you connect all the channels need to send 2000+ rows of backlog for every channel, which is pretty inefficient.


What!? That's completely the opposite to my experience! Essentially, after setting up ZNC to your liking, all you have to do in your client is change the irc server from say, irc.freenode.net to znc.yourserver.com:port and add a password for the server, username/freenode:password, done!

I thought it'd be annoying having to add servers through the ZNC interface (either web or SSH) but it automatically adds/removes them when you join/leave.

In terms of buffers, I generally don't have it set to 2000+, normally around 100 max. I'll just go through the logs if I really need to catch up.


The clients I use have ZNC integration. I use Textual on OS X and Colloquy on iOS. Both automatically play back the buffer when they connect without having to do any setup like perform scripts or whatever.

I also compiled a module for ZNC that sends push notifications to Colloquy when a PM, highlight word or name mention happens.


sweet, this is really clean and runs really well. - my Mom is 67 and has been on IRC for 20+ years using mIRC for most of those. I bet if this got packaged so that users like her could one click "install" it they could grab a huge portion of the user base.


I really want to make the installation and usage as simple as possible- simplicity is my #1 priority! If you ever get her to try it out, I'd love if you'd email me to tell me how it went! You can find my email on my github profile.


I wish the "user has left the channel" noise was off by default in IRC clients.


Why does it need sudo to run on port 3000?


It shouldn't. The install script copies files that you need super user privs to get at (specifically, /usr/lib), but after it's installed, you should be able to run the aIRChat server (node Content/app.js) without sudo.


Awesome thanks. I really like it.


I'm really glad that you're liking it! :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: