[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fJn_OmXYOolXF-SGnmHtb8QQWIK7-S4alsyssiSTunq0":3},{"slug":4,"display_name":5,"profile_url":6,"plugin_count":7,"total_installs":8,"avg_security_score":9,"avg_patch_time_days":10,"trust_score":11,"computed_at":12,"plugins":13},"nsgroup","Sergey Ivanov","https:\u002F\u002Fprofiles.wordpress.org\u002Fnsgroup\u002F",1,0,100,30,94,"2026-05-20T07:41:37.866Z",[14],{"slug":15,"name":16,"version":17,"author":5,"author_profile":6,"description":18,"short_description":19,"active_installs":8,"downloaded":20,"rating":8,"num_ratings":8,"last_updated":21,"tested_up_to":22,"requires_at_least":23,"requires_php":24,"tags":25,"homepage":31,"download_link":32,"security_score":9,"vuln_count":8,"unpatched_count":8,"last_vuln_date":33,"fetched_at":34},"ns-chat","NS Chat","1.0.1","\u003Cp>NS Chat Plugin enables real-time communication between WordPress users using WebSocket technology, powered by the Workerman library.\u003C\u002Fp>\n\u003Cp>Key Features:\u003Cbr \u002F>\n* Real-time private chat between users\u003Cbr \u002F>\n* Visual unread message indicators\u003Cbr \u002F>\n* Persistent chat history stored in the database\u003Cbr \u002F>\n* Lightweight modular JS + PHP architecture\u003Cbr \u002F>\n* Automatic migration and sync of WP users to chat system\u003Cbr \u002F>\n* Linux daemon service with SSL support for secure connections\u003Cbr \u002F>\n* Future-ready integration with NFS or AWS S3 for file upload\u002Fdownload\u003C\u002Fp>\n\u003Cp>Planned Features:\u003Cbr \u002F>\n* Message editing and deletion\u003Cbr \u002F>\n* Read receipt indicators (message seen)\u003Cbr \u002F>\n* File attachments with optional NFS or AWS S3 integration\u003C\u002Fp>\n\u003Cp>Ideal for community websites, intranets, or any platform requiring internal messaging without third-party services.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>For integration help or consulting on adapting the plugin to your project, contact the developer at: ns.group.tech@gmail.com\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>WebSocket Server Setup (Linux with SSL)\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\n\u003Cp>\u003Cstrong>Create a systemd service file:\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ccode>bash\u003Cbr \u002F>\nsudo vim \u002Fetc\u002Fsystemd\u002Fsystem\u002Fwebsocket_server.service\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Paste the following content:\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ccode>bash\u003Cbr \u002F>\n[Unit]\u003Cbr \u002F>\nDescription=WebSocket Server for NS Chat (SSL)\u003Cbr \u002F>\nAfter=network.target\u003Cbr \u002F>\n[Service]\u003Cbr \u002F>\nExecStart=\u002Fusr\u002Fbin\u002Fphp \u002Ffile\u002Fto\u002Fpath\u002Fyourdomain\u002Fwp-content\u002Fplugins\u002Fns-chat\u002Fserver.php start\u003Cbr \u002F>\nRestart=always\u003Cbr \u002F>\nRestartSec=25\u003Cbr \u002F>\nUser=www-data\u003Cbr \u002F>\nGroup=www-data\u003Cbr \u002F>\nStandardOutput=file:\u002Fvar\u002Flog\u002Fwebsocket_server.out.log\u003Cbr \u002F>\nStandardError=file:\u002Fvar\u002Flog\u002Fwebsocket_server.err.log\u003Cbr \u002F>\n[Install]\u003Cbr \u002F>\nWantedBy=multi-user.target\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Add SSL context in \u003Ccode>server.php\u003C\u002Fcode>:\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ccode>php\u003Cbr \u002F>\n$context = [\u003Cbr \u002F>\n'ssl' => [\u003Cbr \u002F>\n    'local_cert'  => '\u002Fpath\u002Fto\u002Ffile.crt',\u003Cbr \u002F>\n    'local_pk'    => '\u002Fpath\u002Fto\u002Ffile.key',\u003Cbr \u002F>\n    'verify_peer' => false,\u003Cbr \u002F>\n]\u003Cbr \u002F>\n];\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Set permissions for plugin folder:\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ccode>bash\u003Cbr \u002F>\nsudo chown -R www-data:www-data \u002Fpath\u002Fto\u002Fns-chat\u002F\u003Cbr \u002F>\nsudo chmod -R 775 \u002Fpath\u002Fto\u002Fns-chat\u002F\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Reload and start the daemon:\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ccode>bash\u003Cbr \u002F>\nsudo systemctl daemon-reload\u003Cbr \u002F>\nsudo systemctl enable websocket_server --now\u003Cbr \u002F>\nsudo systemctl restart websocket_server\u003Cbr \u002F>\nsudo systemctl status websocket_server\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>\u003Cstrong>Check logs if needed:\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ccode>bash\u003Cbr \u002F>\n\u002Fvar\u002Flog\u002Fwebsocket_server.out.log\u003Cbr \u002F>\n\u002Fvar\u002Flog\u002Fwebsocket_server.err.log\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Custom Port Configuration\u003C\u002Fh3>\n\u003Cp>By default, the WebSocket server listens on \u003Cstrong>port 2346\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>To use a different port:\u003C\u002Fp>\n\u003Col>\n\u003Cli>Change the port in \u003Ccode>server.php\u003C\u002Fcode>:\u003Cbr \u002F>\n\u003Ccode>php\u003Cbr \u002F>\n$wsWorker = new Worker('websocket:\u002F\u002F0.0.0.0:2346', $context);\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Change the port in \u003Ccode>ns-chat.php\u003C\u002Fcode>:\u003Cbr \u002F>\n\u003Ccode>php\u003Cbr \u002F>\n$ws_port = 2346;\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>You can check and change the port in \u003Ccode>chat-ui.js\u003C\u002Fcode>:\u003Cbr \u002F>\n\u003Ccode>js\u003Cbr \u002F>\nconst port   = nschat_data.wsPort || 2346;\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>If the port is closed, then open a new port on your server’s firewall:\u003Cbr \u002F>\n\u003Ccode>bash\u003Cbr \u002F>\nsudo ufw allow \u003Cyour-port>\u002Ftcp\u003Cbr \u002F>\nsudo firewall-cmd --permanent --add-port=\u003Cyour-port>\u002Ftcp\u003Cbr \u002F>\nsudo firewall-cmd --reload\u003Cbr \u002F>\nsudo iptables -A INPUT -p tcp --dport \u003Cyour-port> -j ACCEPT\u003Cbr \u002F>\nsudo iptables-save > \u002Fetc\u002Fiptables\u002Frules.v4\u003C\u002Fcode>\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Database Tables\u003C\u002Fh3>\n\u003Cp>The plugin creates and uses the following tables:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>wp_ns_chat_dialogues\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp_ns_chat_messages\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>wp_ns_chat_users\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Tables are created and populated automatically on plugin activation.\u003C\u002Fp>\n\u003Ch3>User Synchronization\u003C\u002Fh3>\n\u003Col>\n\u003Cli>\u003Cstrong>Initial migration\u003C\u002Fstrong> of all users from \u003Ccode>wp_users\u003C\u002Fcode> to \u003Ccode>wp_ns_chat_users\u003C\u002Fcode> on plugin activation.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>New registrations\u003C\u002Fstrong> are handled by:\u003Cbr \u002F>\n\u003Ccode>php\u003Cbr \u002F>\nadd_action('user_register', 'ns_chat_add_user_on_registration');\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Profile updates\u003C\u002Fstrong> are synced via:\u003Cbr \u002F>\n\u003Ccode>php\u003Cbr \u002F>\nadd_action('profile_update', 'ns_chat_update_user_data');\u003C\u002Fcode>\u003Cbr \u002F>\nYou may bind these functions to custom hooks based on your app’s logic.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>GPLv2 or later\u003C\u002Fp>\n","Real-time WebSocket chat for WordPress with user sync and message history.",395,"2025-09-23T06:35:00.000Z","6.8.5","5.8","7.4",[26,27,28,29,30],"chat","messaging","real-time","websocket","workerman","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fns-chat\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fns-chat.1.0.1.zip",null,"2026-04-16T10:56:18.058Z"]