在Ubuntu上搞实时通信,Node.js搭配WebSocket几乎是标配方案。WebSocket这个协议大家应该不陌生,它能在单个TCP连接上实现全双工通信,简单说就是让服务端和客户端能随时互推数据,不需要像HTTP那样反复握手。下面直接上步骤,跟着走就能跑起来。

Ubuntu下Node.js如何实现实时通信功能

第一步,先把Node.js装上。如果你还没装,终端里跑这两行就行:

sudo apt update
sudo apt install nodejs npm

然后创建项目目录。新建一个文件夹,进去初始化Node项目,标准操作:

mkdir realtime-chat
cd realtime-chat
npm init -y

接下来安装WebSocket库。这里推荐ws,轻量稳定,npm一把梭:

npm install ws

核心环节:创建WebSocket服务器。新建一个server.js,写入以下代码。这段代码的逻辑很清晰——监听8080端口,收到客户端消息后,广播给所有其他连接的客户端(除了发消息的自己)。同时新连接会收到一条欢迎信息。

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
    ws.on('message', function incoming(message) {
        console.log('received: %s', message);
        // Broadcast to all clients
        wss.clients.forEach(function each(client) {
            if (client !== ws && client.readyState === WebSocket.OPEN) {
                client.send(message);
            }
        });
    });

    ws.send('You are connected to the WebSocket server!');
});

console.log('WebSocket server is running on ws://localhost:8080');

再搞一个客户端页面。新建client.html,代码量不大,就是个简易聊天界面:输入框、发送按钮、消息列表。Ja vaScript部分用原生WebSocket API连接服务器,收到消息就追加到列表,发送消息则调用send()




    
    
    WebSocket Client


    

WebSocket Client

    最后跑起来看看效果。终端执行node server.js启动服务,然后用浏览器打开http://localhost:8080/client.html(注意这里不是直接访问文件路径,而是需要用一个HTTP服务器托管client.html,或者更简单地直接用npx serve之类的工具)。如果一切正常,你会看到连接成功的日志,发一条消息,所有打开的客户端页面都能收到广播。

    至此,一个最基本的实时通信demo就搭好了。当然,这只是一个起点——你可以在此基础上做很多扩展,比如加入房间管理、用户身份认证、消息持久化,甚至结合WebRTC做音视频。从实践角度看,ws库的性能和稳定性在业界已经被广泛验证,值得信任。

    本文转载于:https://www.yisu.com/ask/75914573.html 如有侵犯,请联系zhengruancom@outlook.com删除。
    免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。