Node JS(四)

利用Socket做一个简单的群聊
用node做群聊的过程没有java那么复杂,它是单线程,服务器和客户端也是一对多的关系,当客户端把数据发送给服务器的时候,服务器接收到数据,然后将数据进行转发即可。
这里写图片描述

一、服务器端
在node里面创建服务器分为三个步骤,分别是:
1、引入net模块

let net=require("net");

2、利用net创建服务器

let sk=net.createServer(function(socket){
    //服务器要进行的操作
});

3、启动服务器

sk.listen("9090",function(err){
    if(err) console.log("端口被占用!");
    console.log("服务器启动成功!");
});

做完这三步以后的核心就是服务器如何对数据进行转发。其实原理也很简单,每当有一个客户端进来的时候,就会创建一个socket,所以我们只需要将创建的socket用一个容器存起来就可以,然后将数据发送给每一个socket即可。(这里的容器我用的是数组)

   socketlist[socketlist.length]=socket;
    console.log("有"+socketlist.length+"个客户端连接上了");
    //给客户端发送一段文字
    socket.write("welcome to chat room!\r\n");
    socket.write("please input your name:");
//    服务器端接收客户端发来的数据
    let username = "",msg = "",flag=true;
    socket.on("data",function(chunk){
        if(flag){
            username=chunk.toString().trim();
            flag=!flag;
        }else{
            console.log("username:"+chunk.toString().trim());
            //转发出去,给其他每一个客户端都转发一次,存到数组里面
            for(var i=0;i<socketlist.length;i++){
                socketlist[i].write(username+" say:"+chunk.toString().trim());
            }
        }
    });

读取数据:

socket.on();

写数据:
socket.write(要发送的数据);

二、客户端
客户端的代码其实很简单,就发送数据和接收数据。它也分为三步:
1、引入net模块

let net=require("net");

2、与服务器建立连接,提供端口和ip地址,并通过回调函数确认链接结果

let socket=net.connect({port:"9090",host:"localhost"},function(err){
    if(err) throw err;
    //接收数据
    socket.on("data",function(chunk){
        console.log(chunk.toString().trim());
    });
   //发送数据
    process.stdin.on("data",function(chunk){
        socket.write(chunk);
    });
});

测试:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值