NS Chat

Description

NS Chat Plugin enables real-time communication between WordPress users using WebSocket technology, powered by the Workerman library.

Key Features:
* Real-time private chat between users
* Visual unread message indicators
* Persistent chat history stored in the database
* Lightweight modular JS + PHP architecture
* Automatic migration and sync of WP users to chat system
* Linux daemon service with SSL support for secure connections
* Future-ready integration with NFS or AWS S3 for file upload/download

Planned Features:
* Message editing and deletion
* Read receipt indicators (message seen)
* File attachments with optional NFS or AWS S3 integration

Ideal for community websites, intranets, or any platform requiring internal messaging without third-party services.

For integration help or consulting on adapting the plugin to your project, contact the developer at: ns.group.tech@gmail.com

WebSocket Server Setup (Linux with SSL)

  1. Create a systemd service file:
    bash
    sudo vim /etc/systemd/system/websocket_server.service

  2. Paste the following content:
    bash
    [Unit]
    Description=WebSocket Server for NS Chat (SSL)
    After=network.target
    [Service]
    ExecStart=/usr/bin/php /file/to/path/yourdomain/wp-content/plugins/ns-chat/server.php start
    Restart=always
    RestartSec=25
    User=www-data
    Group=www-data
    StandardOutput=file:/var/log/websocket_server.out.log
    StandardError=file:/var/log/websocket_server.err.log
    [Install]
    WantedBy=multi-user.target

  3. Add SSL context in server.php:
    php
    $context = [
    'ssl' => [
    'local_cert' => '/path/to/file.crt',
    'local_pk' => '/path/to/file.key',
    'verify_peer' => false,
    ]
    ];

  4. Set permissions for plugin folder:
    bash
    sudo chown -R www-data:www-data /path/to/ns-chat/
    sudo chmod -R 775 /path/to/ns-chat/

  5. Reload and start the daemon:
    bash
    sudo systemctl daemon-reload
    sudo systemctl enable websocket_server --now
    sudo systemctl restart websocket_server
    sudo systemctl status websocket_server

  6. Check logs if needed:
    bash
    /var/log/websocket_server.out.log
    /var/log/websocket_server.err.log

Custom Port Configuration

By default, the WebSocket server listens on port 2346.

To use a different port:

  1. Change the port in server.php:
    php
    $wsWorker = new Worker('websocket://0.0.0.0:2346', $context);

  2. Change the port in chat-ui.js:
    js
    this.socketManager = new WebSocketManager(
    wss://${chatData.domainName}:2346, (message) => this.handleIncomingMessage(message));

  3. If the port is closed, then open a new port on your server’s firewall:
    bash
    sudo ufw allow <your-port>/tcp
    sudo firewall-cmd --permanent --add-port=<your-port>/tcp
    sudo firewall-cmd --reload
    sudo iptables -A INPUT -p tcp --dport <your-port> -j ACCEPT
    sudo iptables-save > /etc/iptables/rules.v4

Database Tables

The plugin creates and uses the following tables:

  • wp_ns_chat_dialogues
  • wp_ns_chat_messages
  • wp_ns_chat_users

Tables are created and populated automatically on plugin activation.

User Synchronization

  1. Initial migration of all users from wp_users to wp_ns_chat_users on plugin activation.
  2. New registrations are handled by:
    php
    add_action('user_register', 'ns_chat_add_user_on_registration');
  3. Profile updates are synced via:
    php
    add_action('profile_update', 'ns_chat_update_user_data');

    You may bind these functions to custom hooks based on your app’s logic.

License

GPLv2 or later

Installation

  1. Upload the plugin folder ns-chat to /wp-content/plugins/.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. After activation, a new page template called “NS Chat Template” will be available when creating pages.
  4. Set up the WebSocket server on your Linux machine (see below).

FAQ

Does this work on shared hosting?

No, it requires a persistent PHP process for the WebSocket server. Use a VPS or dedicated server.

Is SSL required?

Yes. To use secure WebSocket (wss://), SSL certificates must be configured in server.php.

Can I use a different port than 2346?

Yes. See “Custom Port Configuration” section.

Can I get help with integration into my custom project?

Yes, you can contact the developer at ns.group.tech@gmail.com for custom integration support or consulting.

Does it support group chats?

Not yet. Planned in future versions.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“NS Chat” is open source software. The following people have contributed to this plugin.

Contributors

Translate “NS Chat” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0

  • Initial public release.
  • One-on-one messaging with WebSocket daemon
  • User sync and message storage