CraxIM Instant Messenger / Global Chat Alpha v1.0.0.6


Well here it is! After much work we finally have a (somewhat) working Instant Messenger!

It is very early alpha so expect crashes, freezes and things generally not working right or well. I know everybody wants a messenger so I am sharing it early. All it can do for now is global chat, domain chat and private messaging.

You can get it at


CraxIM includes 3 separate windows - the User list, chat history and the input bar.

Next to each window is a small white dot

If you click on this dot it will lock the window in place and autohide it. When it is hidden you can mouseover the dot to look at the window. If you want to move it around just click the dot again to unlock it.

If there is activity in the window while it is invisible the dot will turn green, alerting you that something has happened.

If you would like to private message a user, just click on their name and the input bar will automatically fill with the proper command to send them a private message.

The user list shows everybody online in gray, while CraxIM users show up as white.

There are 3 Status settings - ‘Available’ (green), ‘Busy’ (yellow) and ‘Hidden’ (red). In busy mode you can global chat but not receive messages. In hidden mode you can read global chat but can’t message or receive messages.

You can switch between domain chat and global chat. If a channel has activity while you aren’t in it, the button will turn green to show there was activity.

The menu options don’t do much yet (they are stubs for now).

Here are some of the things planned for craxim:

  • add chat tabs for private messages
  • domain admin controls so domain owners can police their domain chat however they see fit.
  • allow domain owners to promote users into custom ranks that can each have their own set of commands
  • server messages for domains - messages appear in large text in the middle of the screen
  • multiple language support
  • window options (color, alpha background, font size, etc)
  • resizable windows
  • get the scroll bars to work on chat history and user list
  • word wrap
  • saving/loading chat history logs
  • user profiles with photos
  • searchable user directory
  • plugin system for developers to create their own add-ons and list it in our add-on directory
  • per-friend and overall encryption
  • automatic user authentication (right now users are not authenticated, you’ve been warned!)
    …and a lot more!


Some of you may have problems connecting with websockets. You can go to to test your websockets if you have problems. It could be your firewall, network setup or just a problem with HiFi (they are looking into what is causing it). Here is a script you can run to test websockets.

  • The status settings work now. There are 3 - ‘Available’ (green), ‘Busy’ (yellow) and ‘Hidden’ (red). In busy mode you can global chat but not receive messages. In hidden mode you can read global chat but can’t message or receive messages.

  • switched all script hosting to http instead of https because users with Macs were having problems.

  • Added domain chat. You can switch between global and domain using these buttons. When there is activity in the unselected chat the name will turn green to notify you of activity.

  • Fixed a bug that would prevent the entire global userlist from displaying properly.
  • Session resumes now work. You no longer have to wait for your ghost to timeout to log in again.
  • logging in users now disconnect properly when there is an error
  • Fixed a bug that would screw things up when more than one user was logged in at a time (Thanks to @Ai_Austin and @Richardus.Raymaker for helping to spot this one whether they knowingly helped or not).

  • Changed “global” and “domain” buttons to icons indicating global or domain chat selection
  • friends list window was based on interface window size, this has been removed and window now has the same size for everybody (at least until window resizing is implemented).

  • Private messages now use their own windows. Clicking on a name in the user list will open a private message window. Receiving a private message will also open a window (if a window to that user is not already open).

A Comparison Between High Fidelity and Sansar

An update:


Added domain chat. You can switch between global and domain using these buttons. When there is activity in the unselected chat the name will turn green to notify you of activity.


@Cracker_Hax is the script currently on the URL you gave?

I tried opening it up in “Run script from URL” on Windows 10, Interface 3649 and nothing shows, but no faults are reported. I guess it could be the websockets/firewall issues you mentioned as we have several layers of firewall (Windows machine, School and University) before we reach the outside world or incoming port contacts are allowed in.

The web socket echo test shows the browser as supported… and a connect works (but only if the secure TLS is ticked) and the send echo test works when connected but again only with TLS ticked.


had the same problem


My bad, I messed up the filename on my server. Its working now.


Ok now it loads but i get a connecting message over and over on global. I ran the test script and got hello world back, any ideas?


It works fine for me and others. HiFi has some problems with websockets. Try posting here maybe they can fix it.

Did you try both WS and WSS with hello world?


I think this little exchange makes my point. This is SOOOO silly and shows a BIG lack of understanding of the many modalities of use even with a tiny number of users. This needs serious rethinking.

WS in the Websockets echo test does not work for me. I had to tick the secure websockets/TLS box and then the test worked.


i used your script which gave me 2 hello worlds and i went to a website mentioned further up said i supported websockets.

all getting 2 tricky for me, i could see online users but not connect


Craxim chat still does not seem to be serving at 21:12 GMT @Cracker_Hax - or nothing is loading and I get no feedback that the script cannot load when I do run from UR in Interface 3651. Its in the running script list but not showing up… and a reload with the recycle icon has no effect. And I think I am a machine that is not behind lots of firewalls this evening (UK time). It did work here from home on one test I tried a few days ago.

I have @ctrlaltdavid script running too for testing.

But my issue is who else knows what you have BEFORE you can establish communication. And having a notepad alongside the Interface and using that as a reminder of the URLs needed… when working on many separate machines is really awkward.

Maybe at least chat.js could be added into the list of example scripts that are offered so we can all find these things without reading many blog posts to act as a reminder when we are on a new setup?

The Interface -> Tools -> Chat tool is now active.


seems as though the script is not being served, so hard to comment on any downstream issues.

[11/30 13:27:42] [DEBUG] Loading script at QUrl(“”)
[11/30 13:27:45] [DEBUG] Could not load QUrl(“”)
[11/30 13:27:45] [DEBUG] Error loading file: QUrl(“”) line: 924
[11/30 13:27:45] [WARNING] [UncaughtException] ReferenceError: Can’t find variable: _load in [11/30 13:27:45] [WARNING] [Backtrace] [11/30 13:27:45] [WARNING] () at

also, always happy to look at any nice example PRs authors want to submit, but that is, of course, up to them to decide to do.


Yeah it looks like the server wasn’t running, but it isn’t showing a crash either. It’s running now. Please try to connect so I can debug it.


I tried running craxim, no go. Even tried creating a new script with this:

Still no go.


Yeah the server crashed. Thanks now I know the problem.

I was adding code for domains to have their Bot log in and it was crashing the server when somebody left the domain.


I think if the font size doubled in HMD mode, it would be quite easy to read.


It should be easy to read with a production quality Oculus Rift. Which one do you have? I tested it with DK1.

The names on the friend list could probably be bigger.


DK2, so 960×1080 per eye.

That’s just enough to make the current font readable but not comfortably so.


Re legibility in the rift , There’s a demo for the rift called I expect you to die. In that you have cards with information on them when u click on them u can wind them into focus by rolling the mouse wheel. Its worth a look at as it works kinda well cool game either way


@Cracker_Hax wonder if you have a suggestion on how I can see what is wrong? The web socket echo tester works on my setup when I tick the secure web sockets box in which case it says “CONNECTED” and echos the test string as a response. But does not work for non-secure, it seems not to connect and not to echo then.

On the tool itself it says Connecting… but nothing after that and if I type something in domain or global it says “Not Connected”.

Whether I change my status to green or not makes no difference, but my avatar name shows in grey all the time, so I assume I just am not connecting at all.


Well I was using WSS for the server but Mac users are having problems with SSL so I switched it to just plain WS. I found that having both WS and WSS (on different ports of course) would cause it not to work for Macs.

Status shouldn’t matter, in fact I think I broke it with my last update (it sets and works correctly but it might not be saving right).