Home Plugins ns chat
NS Chat logo

NS Chat

by Sergey Ivanov on WordPress.org

Real-time WebSocket chat for WordPress with user sync and message history.

(0)

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 /tcp
    sudo firewall-cmd --permanent --add-port=/tcp
    sudo firewall-cmd --reload
    sudo iptables -A INPUT -p tcp --dport -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

Active installations0+
Weekly downloads
7-80.56%
Version1.0
Last updated6/6/2025
WordPress version5.8
Tested up to6.8.1
PHP version7.4
Tags
chatmessagingreal-timeWebsocketworkerman