FreezeMessenger is an advanced instant messaging platform written in PHP, supporting infinite rooms, private messages, full-text message searching, message editing and deletion, file uploads, new message notifications, user statuses, per-room censors, custom emoticons, external logins, and more.

Flexible Frontends

All core FreezeMessenger functionality is implemented through a REST-like API, meaning anyone can write their own FreezeMessenger frontends. FreezeMessenger currently comes with two frontends:

  • The premier frontend (behind), “WebPro”, runs in the browser and was developed using Bootstrap, jQuery, and TypeScript.
  • The desktop Java client (right) is a more minimal affair, supporting basic chatting, and was developed using JavaFX and Jackson.

Private Messaging

Private messages allow any two users to have a private conversation:

  1. Users will be notified immediately when a new private message is sent to them.
  2. Users can disable private messaging, or restrict incoming private messages to only other users in their friends list.
  3. If a user blocks private messaging with another user, any existing private message will become read-only; both users will still be able to see their history, but not send new messages.
  4. Admins can revoke private messaging privileges on a per-user basis.

Advanced Room Permissioning

Rooms support an advanced level of permissioning:

  1. Default room permissions allow room creators to hide a room by default, allow everyone to view it, or allow everyone to post in it.
  2. Individual users can be granted granular permissions in rooms; for simplicity, the WebPro frontend exposes only the list of users allowed to both view and post in a room.
  3. Rooms have three moderation privileges: one that allows moderators to delete room posts, one that allows moderators to edit room properties and kick users, and one that allows moderators to alter the users allowed in a room.

Plus, any allowed user can follow a room to be notified whenever new messages are posted in it!

Powerful Administrative Tools

The FreezeMessenger administrative tools can be used to:

  1. View moderator, query, and access logs.
  2. Manage censor lists.
  3. Manage emoticons.
  4. Edit user privileges.
  5. Edit system configuration.
  6. View and clear the system cache.
  7. And, experimentally, update the system database schema after the dbSchema.xml file changes.

Integrated Logins

Logins providers can be used to provide a whole bunch of functionality, including:

    1. Usernames and username formatting.
    2. Usergroups.
    3. Avatars and profile URLs.
    4. Site-wide emoticons.

Supported Login Methods

vBulletin (versions 3/4 and 5) and PHPBB3 can be used as primary login providers, and user avatars, profiles, and more will be copied from these systems, providing amazing user integration with your existing forum systems.

In addition, Google, Facebook, Twitter, Steam, and Reddit can all be used as secondary OAuth login providers, providing easy one-click sign-on to users with social media accounts.

Advanced Event Streaming Support

Event streams are used to support a variety of events, including:

  1. User Events
    1. Missed Message (including new private messages)
  2. Room Events
    1. New Message
    2. Edited Message
    3. Deleted Message
    4. Topic Change
    5. User Status Change (including typing)

Multiple Event Stream Systems Supported

In addition to an efficient database-only implementation, FreezeMessenger supports the following streaming accelerators:

  1. Redis
  2. Apache Kafka
  3. PostgreSQL (using LISTEN/NOTIFY)

Supported Cache Methods

A variety of cache servers can be used to optimise FreezeMessenger’s performance. These include:

  • PHP’s built-in APC and APCu extensions.
  • Memcached.
  • Redis.
  • Custom disk caching, if none else is available.

Powerful Database Support

FreezeMessenger is database-flexible; it supports the following database software:

  1. MySQL (and MariaDB)
  2. PostgreSQL
  3. Microsoft SQL Server