首页 > 数据库 >Node 配合 webseket 订阅 pgsql 的数据表变化

Node 配合 webseket 订阅 pgsql 的数据表变化

时间:2023-09-05 15:14:20浏览次数:40  
标签:Node webseket console log notification 数据表 ws const message

pg订阅 传送门

服务端代码

const {Client} = require('pg');

const WebSocket = require('ws');
const wss = new WebSocket.Server({
    port: 8080, perMessageDeflate: false, verifyClient: (info, cb) => {
        const origin = info.origin || '';
        cb(true);
    },
});

const client = new Client('postgres://chris:[email protected]:5432/postgres')

client.connect().then(() => {
    console.log('Connected to PostGreSQL database');
    client.query('LISTEN watchers');
}).catch((err) => {
    console.error('Error connecting to PostGreSQL database', err);
});

process.on('SIGINT', () => {
    client.end();
    process.exit(0);
});

wss.on('connection', (ws) => {

    console.log('client connection');

    client.on('notification', (notification) => {
        console.log('Received notification:', notification.payload);
        ws.send(`notification:${notification.payload}`);
    });


    ws.on('message', (message) => {
        console.log(`message:${message}`);
        ws.send(`wss:${message}`);
    });

    ws.on('close', () => {
        console.log('connection close');
    });
    
});

客户端 浏览器

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket</title>
</head>
<body>
<script>
    const socket = new WebSocket('ws://localhost:8080');

    // 连接建立时触发
    socket.onopen = function() {
        console.log('connect');
    };

    // 收到服务器消息时触发
    socket.onmessage = function(event) {
        const message = event.data;
        console.log(`message:${message}`);
    };

    // 连接关闭时触发
    socket.onclose = function() {
        console.log('close');
    };

    // 发送消息给服务器
    function sendMessage() {
        const message = 'Hello, server!';
        socket.send(message);
        console.log(`sendMessage:${message}`);
    }
</script>

<button onclick="sendMessage()">sendMessage</button>
</body>
</html>

标签:Node,webseket,console,log,notification,数据表,ws,const,message
From: https://www.cnblogs.com/guanchaoguo/p/17679681.html

相关文章

  • node.Js
    创建Node.js应用步骤一、使用require指令来加载和引入模块语法格式如下:constmodule=require('module-name');其中,module-name可以是一个文件路径(相对或绝对路径),也可以是一个模块名称,如果是一个模块名称,Node.js会自动从node_modules目录中查找该模块。require指令会返回......
  • 泛微E-office getFolderZtreeNodes SQL注入漏洞
    漏洞简介getFolderZtreeNodes.php存在SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息漏洞复现fofa语法:app="泛微-EOffice"登录页面如下:POC:POST/general/system/file_folder/purview_new/getFolderZtreeNodes.phpHTTP/1.1Host:User-Agent:Mozilla/5.0(WindowsNT......
  • Win7系统使用高版本node.js
    一、问题描述最近一段时间,由于公司前段构建Vue项目时,使用的是16.1.0版本的Node.js,而个人电脑上安装的是1.016.3导致使用VueUI时,总是提示下图的问题   于是,只好升级Node.js的版本到16.1.0,但是在升级的时候,由于我本人使用的是Win7系统,出现了Thisapplicatonisonlysupp......
  • node_exporter+Prometheus+Grafana 的数据展示
    对性能测试来说,操作系统资源的监控也是必不可少的。以node_exporter+Prometheus+Grafana为例来说下。结构图: 一、node_exporterhttps://kgithub.com/prometheus/node_exporter/releases下载安装包,解压运行即可。默认监听9100端口,注意端口冲突! 二、Prometheus下载解压Pr......
  • 【专题】2023AIGC应用与实践展望报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33544自2022年11月ChatGPT发布以来,其超出预期的“涌现”能力彻底点燃了AIGC赛道。从人力资源角度来看,AIGC相关职位数量明显增加,并且人才对于这些职位的投递也更加积极。阅读原文,获取专题报告合集全文,解锁文末190份AIGC行业相关报告。值得注意的是,A......
  • 【专题】AIGC技术给教育数字化转型带来的机遇与挑战报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33544自2022年11月ChatGPT发布以来,其超出预期的“涌现”能力彻底点燃了AIGC赛道。从人力资源角度来看,AIGC相关职位数量明显增加,并且人才对于这些职位的投递也更加积极。阅读原文,获取专题报告合集全文,解锁文末190份AIGC行业相关报告。值得注意的是,A......
  • 【专题】2023年AIGC行业调研报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33544自2022年11月ChatGPT发布以来,其超出预期的“涌现”能力彻底点燃了AIGC赛道。从人力资源角度来看,AIGC相关职位数量明显增加,并且人才对于这些职位的投递也更加积极。阅读原文,获取专题报告合集全文,解锁文末190份AIGC行业相关报告。值得注意的是,A......
  • 【专题】2023AIGC人才趋势报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33544自2022年11月ChatGPT发布以来,其超出预期的“涌现”能力彻底点燃了AIGC赛道。从人力资源角度来看,AIGC相关职位数量明显增加,并且人才对于这些职位的投递也更加积极。阅读原文,获取专题报告合集全文,解锁文末190份AIGC行业相关报告。值得注意的是,A......
  • MySQL基础篇:掌握数据表操作的基础知识
    表(table)是一种结构化的文件,可以用来存储特定类型的数据,如:学生信息,课程信息,都可以放到表中。另外表都有特定的名称,而且不能重复。表中具有几个概念:列、行、主键。列叫做字段(Column),行叫做表中的记录,每一个字段都有:字段名称/字段数据类型/字段约束/字段长度创建表在MySQL中,......
  • 【专题】2023AIGC人才供需报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=33544自2022年11月ChatGPT发布以来,其超出预期的“涌现”能力彻底点燃了AIGC赛道。从人力资源角度来看,AIGC相关职位数量明显增加,并且人才对于这些职位的投递也更加积极。阅读原文,获取专题报告合集全文,解锁文末190份AIGC行业相关报告。值得注意的是,A......