zoukankan      html  css  js  c++  java
  • 利用node.js来实现长连接/聊天(通讯实例)

    首先:

    需要在服务器端安装node.js,然后安装express,socket.io这两个模块,并配置好相关的环境变量等。

    其次:

    服务端代码如下:

    var app = require('express')();
    var server = require('http').Server(app);
    var io = require('socket.io')(server);
    server.listen(3031);
    
    io.on('connection', function (socket) {
        console.log('websocket has connected');
        socket.emit('message', {
            static: 0
        });
        socket.on('num', function (data) {
            console.log(data.num);
            io.sockets.emit('last', {
                result: data.num
            });
        });
    });

    前端代码1如下:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src="socket.io.js"></script>
        <script src="jquery.min.js"></script>
    </head>
    
    <body>
        <div class="result">1</div>
        <div class="addOne">加1</div>
        <script>
            var socket = io.connect('http://localhost:3031');
            socket.on('message', function (data) {
                console.log(data);
            });
            var result = 0;
            $('.addOne').click(function () {
                result += 1;
                $('.result').html(result);
                socket.emit('num', {
                    num: result
                })
            });
        </script>
    
    </body>
    
    </html>

    前端代码2如下:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <script src="socket.io.js"></script>
        <script src="jquery.min.js"></script>
    </head>
    
    <body>
        <div class="result">加1</div>
        <script>
            var socket = io.connect('http://localhost:3031');
            socket.on('message', function (data) {
                console.log(data);
            });
            socket.on('last', function (data) {
                console.log(data);
                $('.result').html(data.result);
            });
        </script>
    </body>
    
    </html>

    小结:通过以上代码,我们可以实现类似于聊天的功能,或者长连接功能。

    注意,及时通讯的功能,不同于普通的请求,相应。而是一直保持通讯中,前端发送,后端接收,后端然后再发送,前端再相应,这样保持着一直的连接。

  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/teamemory/p/10239855.html
Copyright © 2011-2022 走看看