• Nodejs 使用 socket.io 简单实现实时通信


    官网文档: https://www.socket.coms

    安装

    npm install socket.io
    

    服务端

    const express = require('express');
    const app     = express();
    const server  = require('http').createServer(app);
    const io      = require('socket.io')(server);
    
    // 设置模板引擎
    app.set('views',  './view');
    app.engine('.html', require('ejs').__express);
    app.set('view engine', 'html');
    
    // 设置静态文件托管目录
    app.use(express.static('node_modules'));
    
    app.get('/', (request, response) => {
        response.render('index.html');
    });
    
    //监听客户端链接,回调函数会传递本次链接的socket
    io.on('connection', socket => {
        // 监听客户端发送的信息
        socket.on("sentToServer", message => {
            // 给客户端返回信息
            io.emit("sendToClient", {message});
        });
    });
    
    // 监听连接断开事件
    socket.on("disconnect", () => {
        console.log("连接已断开...");
    });
    
    server.listen(3000);
    

    客户端

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>how to use socket</title>
        <script src='/jquery/dist/jquery.min.js'></script>
        <script src="/socket.io/socket.io.js"></script>
    </head>
    <body>
        <form action="#">
            <input type="text" id="message">
            <button id="send">send</button>
        </form>
        <script>
            // 1. 与服务器端建立连接
            const socket = io.connect("http://localhost:3000");
    
            // 2. 监听send按钮点击的事件
            $("#send").click(function(){
                // 获取输入的信息
                let message = $("#message").val().trim();
                // 向服务器端发送信息
                socket.emit("sentToServer", message);
            });
    
            // 3. 获取服务端发送过来的信息
            socket.on("sendToClient", message => {
                console.log(message);
            });
            /**
             * 发布订阅(广播), 一端发布, 可以让多端触发
             */
        </script>
    </body>
    </html>
    
    7942449-f633e0abfe74052e.jpg
    socket
  • 相关阅读:
    C#代码
    属性面板:tabcontroller
    窗体效果
    c#窗体开发
    帝国cms学习
    在树莓派上运行 .net core 2.1 程序 并实现开机启动
    C# 高性能的数组 高性能数组队列实战 HslCommunication的SharpList类详解
    C# 序列化详解,xml序列化,json序列化对比
    C# 读写redis C#读写实时数据库
    python 读写三菱PLC数据,使用以太网读写Q系列,L系列,Fx系列的PLC数据
  • 原文地址:https://www.cnblogs.com/liaohui5/p/10581605.html
Copyright © 2020-2023  润新知