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

官网文档: https://socket.io/

安装

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>
socket
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,076评论 25 708
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 3,034评论 1 3
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,553评论 6 427
  • 主持人:你好,欢迎来到得到直播间,这里是刘澜《北大领导力30讲》的第一场直播。 特别荣幸请到这门课的主理人刘澜老师...
    钱程浩瀚阅读 1,117评论 0 1
  • 我想这里暂时还不属于我 繁华的街道 衣着光鲜的路人 干净漂亮的小轿车 还有车里坐着的 笑容灿烂的宝宝 我想安慰的和...
    铁瓮城主阅读 213评论 0 2