服务器代码
let net = require('net');
// 创建服务器
let server = net.createServer(); // 定义一个数组 ,存放每一个连接服务器的客户端用户
let clients = []; server.on('connection',(client)=>{ //参数表示client 表示要连入的客户端对象
// 记录每一个连入的客户端 通过id
client.id = clients.length;
// 将连入的客户端存入数组中
clients.push(client);
// 服务器监听连入客户端 并将每一个客户端传送的数据 广播给其他用户
// 如果某个客户端存在 将客户端传入的数据发送给 其他的客户端
// 设置字符集
client.setEncoding('utf8');
client.on('data',(data)=>{
for(let i = 0;i < clients.length ; i++ ){
if( clients[i] ){
          //连入服务器的每个用户
clients[i].write(data) //返回每个客户端的数据内容
}
}
}) // 当前连入的客户端退出
client.on('close',(err)=>{
clients[client.id]=null;
})
client.on('error',(err)=>{
clients[client.id]=null;
}) }) server.listen('8000','127.0.0.1',()=>{
console.log('ok');
})

客户端代码:

let net  = require('net');
// 多人通信
let readline = require('readline');
// 创建一个客户端服务 let client = new net.Socket(); client.connect('8000','127.0.0.1');
// 服务器传来数据 这里做监听 client.setEncoding('utf8');
client.on('data',(data)=>{
console.log(data);
}); let rl = readline.createInterface({
input:process.stdin, //输入
output:process.stdout //输出
})
// 监听控制台输入的内容 发送给服务器
rl.on('line',(input)=>{
if(input==='quit'){
rl.close();
client.destroy();
}else{
client.write(input);
}
}) client.write("hello word!");

scoketio的更多相关文章

  1. flask-SocketIO

    本文来源:https://www.jianshu.com/p/d81397edd2b1 websocket是html5中实现了服务端和客户端进行双向文本或二进制数据通信的一种新协议,其实已经低于HTT ...

随机推荐

  1. 常用Dockerfile举例

    FROM ubuntu:14.04 MAINTAINER sss ENV JAVA_HOME /opt/jdk RUN \ echo 'export PATH=$JAVA_HOME/bin:$PATH ...

  2. 【ZJOI2012】灾难

    [ZJOI2012]灾难 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学 ...

  3. 【转】ffmpeg常用基本命令

    [FFmpeg]FFmpeg常用基本命令 1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpe ...

  4. (5)HomeAssistant mqtt-433-esp8266-arduino-传感器

    Home Assistant Integrations使用 https://github.com/1technophile/OpenMQTTGateway/wiki/Home-assistant-in ...

  5. nodejs部署智能合约的方法-web3 0.20版本

    参考:https://www.jianshu.com/p/7e541cd67be2 部署智能合约的方法有很多,比如使用truffle框架,使用remix-ide等,在这里的部署方法是使用nodejs一 ...

  6. 分区默认segment大小变化(64k—>8M)

    _partition_large_extents和_index_partition_large_extents 参考: http://www.xifenfei.com/2013/08/%E5%88%8 ...

  7. .net core 简单项目的创建

    1.linux 安装net coref https://www.microsoft.com/net/learn/get-started/linuxubuntu 2.创建目录 2.创建控制台项目 第一次 ...

  8. 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册

    项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...

  9. Java函数式编程和lambda表达式

    为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论.函数式与命令式编程的区别主要在于:函数式编程是告诉代码你要做什么,而命令式编程则是告诉代码要怎么做.说白了,函数式编程是基于 ...

  10. 程序员修仙之路- CXO让我做一个计算器!!

    菜菜呀,个税最近改革了,我得重新计算你的工资呀,我需要个计算器,你开发一个吧 CEO,CTO,CFO于一身的CXO X总,咱不会买一个吗? 菜菜 那不得花钱吗,一块钱也是钱呀··这个计算器支持加减乘除 ...