Nodejs实时双向通信插件node-primus的使用

Nodejs实时双向通信插件node-primus的使用
node-primus 是一个基于 Node.js 的库,它提供了一个抽象层来支持多种实时通信技术,如 WebSocket、SSE(Server-Sent Events)、Long polling 等。通过使用 node-primus,开发者可以更轻松地实现跨浏览器和服务器的实时通信。

安装

首先,你需要安装 node-primus 和一个 HTTP 服务器框架,比如 Express:

npm install express primus

基本用法

下面是一个简单的例子,展示如何在 Express 应用中集成 Primus。

1. 创建 Express 服务器

const express = require('express');
const primus = require('primus');

// 创建 Express 应用
const app = express();

// 创建 HTTP 服务器
const server = require('http').createServer(app);

// 初始化 Primus 实例
const spark = new primus(server, {
    transformer: 'websockets', // 使用 WebSockets 作为传输层
});

// 设置 Primus 路由
spark.route('/', function (req, res) {
    res.end('<h1>Welcome to Primus</h1>');
});

// 监听连接事件
spark.on('connection', function (spark) {
    console.log(`${spark.address} connected`);

    // 发送消息给客户端
    spark.write({ hello: 'world' });

    // 监听客户端消息
    spark.on('data', function (data) {
        console.log(`Received data from ${spark.address}:`, data);
    });
});

// 启动服务器
server.listen(3000, () => {
    console.log('Primus server running on http://localhost:3000');
});

2. 客户端代码

在客户端,你需要引入 Primus 的脚本,并设置与服务器的连接:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Primus Example</title>
    <!-- 引入 Primus 客户端库 -->
    <script src="/primus/primus.js"></script>
</head>
<body>
    <h1>Primus Client</h1>
    <div id="messages"></div>

    <script>
        // 创建 Primus 连接
        const primus = new Primus('http://localhost:3000');

        // 发送消息到服务器
        primus.write({ hello: 'from client' });

        // 监听来自服务器的消息
        primus.on('data', function (data) {
            const messagesDiv = document.getElementById('messages');
            const message = document.createElement('p');
            message.textContent = JSON.stringify(data);
            messagesDiv.appendChild(message);
        });

        // 监听连接状态变化
        primus.on('open', function () {
            console.log('Connected to server');
        });

        primus.on('end', function () {
            console.log('Connection closed');
        });

        primus.on('error', function (err) {
            console.error('Error:', err);
        });
    </script>
</body>
</html>

总结

以上代码展示了如何在 Express 中集成 Primus 来处理实时通信。你可以在服务器端监听连接事件,并发送和接收数据。客户端则通过创建 Primus 实例并与服务器建立连接,实现消息的收发。


3 回复

当然,Node.js中的node-primus插件是一个非常强大的工具,用于实现服务器与客户端之间的实时双向通信。想象一下,它就像给你的应用装上了一对翅膀,让信息可以自由地在两端飞翔。

首先,你需要安装primus和你喜欢的传输层,比如websockets

npm install primus --save
npm install primus-websockets --save

然后,在你的Node.js服务器中初始化Primus:

var Primus = require('primus');
var Spark = new Primus('http://localhost:8000', { transformer: 'websockets' });

接下来,你可以监听连接事件,并发送或接收消息:

Spark.on('connection', function (spark) {
  spark.write('欢迎来到实时世界!');
  spark.on('data', function (data) {
    console.log('客户端说:', data);
  });
});

对于客户端,你可以这样使用:

<script src="/primus.js"></script>
<script>
  var primus = new Primus('/');

  primus.on('data', function (data) {
    console.log('服务器说:', data);
  });

  primus.write('你好,服务器!');
</script>

现在,你已经准备好享受实时通信的乐趣了!


Primus 是一个用于实现 WebSocket 实时双向通信的 Node.js 插件,它支持多种底层 WebSocket 库,比如 Socket.IO, Engine.IO, ws 等,这使得你的应用具有很好的兼容性和扩展性。下面我将详细介绍如何安装和使用 Primus

安装

首先,你需要安装 Primus 及其 HTTP 服务器(如 Express):

npm install primus express --save

创建一个基本的服务器

接下来,我们将创建一个简单的 Express 服务器,并集成 Primus。

const express = require('express');
const Primus = require('primus');

// 初始化 express 应用
const app = express();

// 设置静态文件目录,以便浏览器能够访问到 primus.js 文件
app.use(express.static('public'));

// 创建 http 服务器
const server = require('http').createServer(app);

// 初始化 Primus
const primus = new Primus(server, {
    transformer: 'engine.io', // 使用 engine.io 作为传输层,默认为 ws
});

// 监听连接事件
primus.on('connection', function (spark) {
    console.log(`${spark.address.ip} 连接到服务器`);

    spark.on('data', function (data) {
        console.log(`从客户端接收到数据: ${data}`);
        spark.write(`服务器回复: ${data}`);
    });
});

// 监听关闭事件
primus.on('disconnection', function (spark) {
    console.log(`${spark.address.ip} 断开连接`);
});

// 启动服务器
server.listen(3000, function () {
    console.log('Primus 服务器运行在 http://localhost:3000');
});

客户端代码

在客户端,我们需要引入 primus.js 文件来建立与服务器的连接。

假设你已经设置了 public 目录,并在其中添加了一个 index.html 文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Primus Test</title>
</head>
<body>
    <h1>WebSocket 测试</h1>
    <input type="text" id="message" placeholder="输入消息">
    <button onclick="sendMessage()">发送消息</button>
    <div id="output"></div>

    <script src="/primus.js"></script>
    <script>
        const primus = new Primus('http://localhost:3000/');

        function sendMessage() {
            const message = document.getElementById('message').value;
            primus.write(message);
            document.getElementById('output').innerHTML += `<p>你发送了: ${message}</p>`;
        }

        primus.on('data', function (data) {
            document.getElementById('output').innerHTML += `<p>服务器回复: ${data}</p>`;
        });
    </script>
</body>
</html>

这个简单的例子展示了如何使用 Primus 在客户端与服务器之间进行双向通信。你可以根据需要进一步扩展功能,比如加入身份验证、处理更多类型的事件等。

node-primus 是一个基于 Primus 框架的 Node.js 实时通信插件,支持多种传输协议(如 WebSocket、SSE 等)。首先,你需要安装它:

npm install primus --save

然后,在你的 Node.js 服务器中引入并配置 Primus:

const primus = require('primus')(require('http').createServer(), {
    transformer: 'websockets' // 选择一个传输方式
});

primus.on('connection', (spark) => {
    spark.write({ hello: 'world' });
});

primus.on('disconnection', () => {});

客户端通过以下方式连接:

<script src="/primus.js"></script>
<script>
var primus = new Primus('/'); 
primus.on('data', function (data) {
    console.log(data);
});
</script>

这样就实现了简单的实时通信。

回到顶部