2016년 8월 21일 노트
socket 실시간 채팅 기술
server.js var net = require('net'); var server = net.createServer((socket)=>{
var time = getTime();//태그 추가//고객 목록에 추가 var name = clients.add(socket);
//고객이 보낸 메시지를 수신하는 socket.on('data', function(data) {//guangbo(data, socket),//클라이언트로부터 정보를 받는console.log('데이터를 받았어---'), console.log(data.tostring());//소유자clients.sendAll(socket, data);});//고객이 socket 연결을 닫았습니다.('close',function(data) {console.log('고객이 갔습니다~'+socket.remoteAddress+'+socket.remotePort);//고객clients.del(socket) 삭제;//모두에게 clients.sendAll(socket,'누군가가 갔습니다! 현재 채팅 인원수:'+clients.length()';console.log('접속자가 있음, 고객지원 수량:'+clients.length()';console.log('접속자가 있음, 고객지원 수량:'+clients.length()';
socket.write(time +' ~'+ name + '!
' +' :'+clients.length());
clients.sendAll(socket,' ! :'+clients.length());
}).on('error',(err)=>{ throw err; }); Clients =new Object(); Clients.list=[];//고객 리스트에 고객지원단 추가//socket 현재 연결
clients.add = function(socket){
socket.name=socket.remoteAddress+remoteAddress+":"+socket.remotePort;
this.list.push(socket);
return socket.name;
}
//클라이언트 목록에서 삭제//socket 현재 socket
clients.del = function(socket) {console.log ('사용자가 간다! 그를 삭제한다!'), for(var i=0; i if(socket ==this.list[i]) {console.log ('사용자가 간다! 삭제했다~~'), this.list.splice(i, 1);}}}
//모든 사람에게 메시지 보내기
//socket 현재 연결//데이터 전송할 데이터
clients.sndAll = funciton(socket.data) {console.log('모두에게 보내기 시작했다!!'), for(var i=1; i if(socket!=this.list[i]) {var o = this.list[i]];//socket이 if(o.writable) {console.log ('socket!=================socket!===========================this.log[i])) {= {consocket('모든 사람에게 보낼 수 있게 보내기 시작') ▲ 모든 사람에게 보내기 시작했다!!!!!!'), rite('----');}else {console.log ('socket이 효력을 상실했습니다: '+ o.name);//socket이 끊겼거나 하면 보낼 수 있습니다. 이 연결을 삭제해야 합니다.this.del (0);}}}}
//Date의 확장으로 Date를 지정된 포맷의 String//월(M)·일(d)·시간(h)·분(m)·초(s)·분기(q)는 1-2개,/년(y)은 1-4개, 밀리초(S)는 1개(1-3자리 숫자)만 사용할 수 있다//예://(new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423//(new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 Date.prototype.Format = function (fmt) {//author: meizz
var 0={"M+":this.getMonth()+1, "d+":this.getDate(),//일 "h+":this.getHours(),//시간 "m+":this.getMinutes(),//분 "s+":this.getSeconds(),//s"q+":Math.floor(this.getMonth()+3)//3분기 "s.get.gisonds"(Millids),
if(/(y+)/.test(fmt))fmt=fmt.reqlace(ReqExp.$1,(this.getFullYear()+"").4-RegExp.$1.length)); for(var k in o) if(new RegExp("("+k+")").test(fmt)) fmt = fmt.replace(RegExp.$1(RegExp.$1.length==1)?(o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
function getTime(){ return new Date().Format("yyyy-MM-dd hh:mm:ss"); }
//채팅 서버 오픈~~server.listen({ host: 'localhost', port: 8888, exclusive: true }); ===================== client.js const net = require('net'); const client = net.connect({port:8080}, ()=>{console.log('연결됐다');};client.('데이터', (data)=>{console.log('데이터 받기'), console.log(data.tostring();}),client.('end', ()=>{console.log('끊겼어'), rl.close();}),
const readline = require('readline'); const rl = readline.createInterface(process.stdin,process.stdout); console.log('다인 채팅방');console.log('88. 그만 얘기하자');rl.setPrompt('뭐라도 말해봐~>');rl.prompt();
rl.('line', (line)=>{switch(line.trim(){switch(line.trim()) {case'88':console.log('다음에 또 놀러오세요~~!'), rl.close(), break;default:s=line.trim(), client.write(s+'\r'),
rl.setPrompt(' ~> ');
rl.prompt();
break;
} }).on('close', ()=> {console.log('돌아와서 계속 얘기하세요.');process.exit(0);});===============chat.js
var express = require('express'); var router = express.Router(); var socket_io = require('socket.io'); var db = require('../model/mongoose');//GET users listing. router.get('/', function (req, res, next) { res.send('respond with a resource'); });
router.prepareSocketIO = function(server) {var io = socket io.listen(server), var clientList = [], var interlocutors = [], io.sockets.on('connection', function(socket) {//연결
clientList.push(socket);
console.log(" :" + clientList.length);
console.log(" " + socket);
socket.on('join', function (user) {//
socket.user = user;
var socketusers ={ user_name:user}
db.socketuserModel.findOne(socketusers,function(error, result){
console.log('he'+result+error);
if(result ==null ){
db.socketuserModel.create(socketusers, function(error){});
}
});
//socket.emit('state', 'SERVER', true);
//socket.broadcast.emit('state', 'SERVER', user + ' ');//
});
socket.on('sendMSG', function (msg) {//
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth()+1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var times = year+' '+month+' '+day+' '+hour+':'+minute+':'+second;
var socketusersmsg ={ user_name:socket.user,send_msg:msg,send_time:times}
db.socketusermsgModel.create(socketusersmsg, function(error){});
socket.emit('chat', socket.user, msg);
socket.broadcast.emit('chat', socket.user, msg);//
});
socket.on('getMSG', function (msg) {//
var usersmsg ={ user_name:socket.user}
db.socketusermsgModel.find(usersmsg,function(error, result){
console.log('he'+result+error);
for(var i=0;i
};
module.exports = router;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.