首页 > 编程语言 >sse node搭建server

sse node搭建server

时间:2023-12-28 14:22:23浏览次数:26  
标签:node console res server source new sse close event

sse-client.ts

export default class SSEClient {
    source: EventSource;

    element: HTMLElement;

    constructor(url) {
        this.source = new EventSource(url || 'http://127.0.0.1:8844/stream');
        this.source.onopen = this.onOpen.bind(this);
        this.source.onerror = this.onError.bind(this);
        this.source.addEventListener('connecttime', this.onConnectTime.bind(this), false);
        this.source.onmessage = this.onMessage.bind(this);
    }

    // eslint-disable-next-line class-methods-use-this
    onOpen(event) {
        console.log('onOpen-event :>> ', event);
    }

    // eslint-disable-next-line class-methods-use-this
    one rror(event) {
        console.log('onError-event :>> ', event);
    }

    // eslint-disable-next-line class-methods-use-this
    onConnectTime(event) {
        console.log('onConnectTime-event :>> ', event);
    }

    // eslint-disable-next-line class-methods-use-this
    onMessage(event) {
        console.log('onMessage-event :>> ', event);
        const localstore = useLocalStore();
        localstore.setAdvertiseMsg([event.data]);
    }

    close() {
        console.log('close :>> ');
        this.source.close();
    }
}

// 使用示例
// const sseClient = new SSEClient('http://127.0.0.1:8844/stream', 'example');
// 当你想关闭连接时,调用sseClient.close();

server.js

const http = require('http');

http.createServer(function (req, res) {
    const fileName = `.${req.url}`;

    if (fileName === './stream') {
        res.writeHead(200, {
            'Content-Type': 'text/event-stream',
            'Cache-Control': 'no-cache',
            Connection: 'keep-alive',
            'Access-Control-Allow-Origin': '*'
        });
        res.write('retry: 10000\n');
        res.write('event: connecttime\n');
        res.write(`data: ${new Date()}\n\n`);
        res.write(`data: ${new Date()}\n\n`);

        interval = setInterval(function () {
            res.write(`data: ${new Date()}\n\n`);
        }, 60000);

        req.connection.addListener(
            'close',
            function () {
                clearInterval(interval);
            },
            false
        );
    }
}).listen(8844, '127.0.0.1');

标签:node,console,res,server,source,new,sse,close,event
From: https://www.cnblogs.com/yoona-lin/p/17932623.html

相关文章

  • mrml python 以及webassembly 实现简单说明
    简单说明下mrmlpython以及webassembly的实现pythonpython是基于了pyo3,利用pyo3提供的能力,暴露了python模块参考处理//暴露的mrml模块#[pymodule]#[pyo3(name="mrml")]fnregister(_py:Python<'_>,m:&PyModule)->PyResult<()>{......
  • node.js
    npm安装的包,dependences下的包和devDependences下得包有什么区别dependences:生产环境使用的包,代码运行必要的包,没有包运行时会报错,如lodashdecDdpendences:开发环境使用的包,代码运行不必要,没要包代码也能跑,使用这些包的目的是方便开发人员做项目,如webpack......
  • SQL SERVER 数据库的常用DBA命令
    查看表是否死锁select* frommaster..SysProcesses wheredb_Name(dbID)='数据库名'  andspId<>@@SpId  anddbID<>0  andblocked>0;或者selectrequest_session_idspid,OBJECT_NAME(resource_associated_entity_id)table......
  • SqlServer数据库
    使用VisualStudio进行winform项目与数据库交互时主要分为如下几步:1.编写JDBC代码2.调用方法进行增删改查操作2.1增2.2删2.3改2.4查我们需先创建好目标数据库,记录下本机SQLServer服务器名称,我的是"PC-20221027HHVU"(直接去SQLServer里看就行) 这里以图......
  • k8s 安装kubesphere3.4.1 多次安装报错 Error from server (InternalError): Internal
    failed:[localhost](item={'ns':'kubesphere-system','kind':'users.iam.kubesphere.io','resource':'admin','release':'ks-core'})=>{"ansible_loop_var":"......
  • node node-sass sass-loader版本对应问题(转)
    1.查看本地node版本node-v具体对应版本如下图:具体对应链接地址:node-sass2.查看项目中package中node-sass和sass-loader是否对应node版本3.不对应应修改成对应版本号以下是部分版本号对应,具体可百度sass-loader4.1.1,node-sass4.3.0sass-loader7.0.3,node-sass4.7.2......
  • 完美解决SqlServer2012启动报错(cannot find one or more components.Please reinstall
    原因:默认安装在C:\ProgramFiles(x86)\MicrosoftVisualStudio10.0文件夹,以支持sqlserver2012.(我之前不小心把这个文件夹删除了)。解决方案:下载了visualstudio2010Isolatedshell完美解决问题,下载后安装就能正常运行SqlServer2012了,其他SqlServer版本请下载visualstudio......
  • Windows Server 2019-Powershell之客户端加域
    将本地计算机添加到域或工作组,可通过Add-Computer命令操作,具体信息如下:语法:Add-Computer[-DomainName][-ComputerName<String[]>][-Confirm]-Credential[-Force][-LocalCredential][-NewName][-OUPath][-Options{AccountCreate|Win9XUpgrade|UnsecuredJoi......
  • geoserver中styles引用外部图片
    使用geoserver发布图层,需要显示指定的图标从geoserver用户手册——PointSymbolizer中可以了解到只需在PointSymbolizer时候使用ExternalGraphic标签,其使用说明如下:<PointSymbolizer><Graphic><ExternalGraphic><OnlineResourcexlink:type="simple"......
  • Unity3D Asset与Object 资源管理系统详解
    Unity3D是一款流行的游戏开发引擎,它提供了一个强大的资源管理系统,可以帮助开发者有效地管理和使用游戏中的资源。在Unity3D中,资源可以分为Asset和Object两种类型,本文将详细介绍Unity3D的Asset与Object资源管理系统的技术细节和代码实现。对啦!这里有个游戏开发交流小组里面聚集了......