• 学习node.js 第4篇 建立一个最小的web聊天系统


    我们生活在一个实时的世界里,有什么比聊天更加实时吗?那就让我们先写一个基
    于TCP 的聊天服务器吧,并且支持Telnet 连接。这很容易,而且能够完全用Node
    来编写。
    首先,我们需要在Node 中包含TCP 模块,并创建一个新的TCP

     

    // JavaScript Document
    var net = require('net');
    chatServer = net.createServer();
    chatServer.on('connection', function(client){
            client.write('Hi!
    ');
            client.write('Bye!
    ');
            client.end();
        })
        chatServer.listen(9000);

     代码第一行,我们加载了net 模块。这个模块包含了Node 需要的所有TCP 功能。
    接着,我们调用net.createServer() 方法来创建一个新的TCP 服务器。有了这
    个服务器,我们需要用它做点儿事。这里调用on() 方法来添加一个事件监听器。
    每当有新的客户端通过网络连接接入服务器,就会触发connection 事件,事件监
    听器就会调用我们指定的函数。
    连接事件在调用回调函数时,会传给我们新客户端所对应的TCP socket 对象的引
    用。我们把此引用命名为client。调用client.write(),就能发送信息给该客
    户端。目前,我们只是简单地发送“Hi!” 和“Bye!”,然后调用client.end() 方
    法来关闭连接。就这么简单,我们的聊天服务器已经初露端倪了。最后,需要调用
    listen() 函数,好让Node 知道监听哪个端口。让我们马上测试一下吧。
    我们可以使用Telnet1(大多数操作系统都自带此程序)来连接新服务器进行测
    试。首先,调用node 命令并带上文件名来启动服务器。然后,打开Telnet 连接到
    localhost 的9000 端口(这是我们在Node 程序中指定的端口 服务器)

    到目前为止,我们创建了一个服务器,它能够接受客户端的连接,并且在断开连接
    前发送了一小段内容。但这还不能称为聊天服务器,我们再来添加几个功能吧。首
    先,需要能收到客户端发送的消息

    var net = require('net')
    var chatServer = net.createServer()
    chatServer.on('connection', function(client) {
    client.write('Hi!
    ');
    client.on('data', function(data) {
    console.log(data)
    })
    })
    chatServer.listen(9000)
    

     这里添加了另外一个事件监听器, 调用的是client.on()。注意, 我们是在
    connection 回调函数的作用域中添加的这个事件监听器,这样就可以访问到连接
    事件所对应的client 对象。新监听器关注的是data 事件,每当client 发送数据
    给服务器时,这一事件都会被触发。接着要删掉client.end() 这一行。如果关闭
    了和客户端的连接,又如何获得新的数据呢?(当然,说“再见”那一行同样也删
    掉了。)现在,无论我们发任何数据给服务器,它都会在终端打印出来

  • 相关阅读:
    JDK7与JDK8环境共存与切换:先安装jdk7,配置好环境变量后再安装jdk8
    Maven环境配置
    JDK的安装
    Access2010打开系统表MSysObjects的控制权限
    Spring aop 简单示例
    redis集群搭建
    springmvc中拦截器与springmvc全局异常处理器的问题
    自定义springmvc统一异常处理器(实现HandlerExceptionResolver接口)不起作用的一种情况
    一句SQL实现MYSQL的递归查询
    2002年的决战坦克,重新玩一遍。qq群号:1035127306
  • 原文地址:https://www.cnblogs.com/hao123456/p/5531822.html
Copyright © 2020-2023  润新知