blog

博客

View on GitHub

socket.io

因为平时一直在公司宿舍住着,前几天的时候晚上11点,公司技术老总突然到来, 说XXX交给你个任务,配合X经理基于node搭建一个socket服务。今晚就要弄好明天早上就要用。

而我则一脸懵逼,啥? node? 我不是PHP么? 让我swoole搞个还差不多,go也凑合。 再不济Java百度百度应该也能写出来。心中思绪万千,在思考啥时候暴露了我还会 node

X经理则过来和我说一下业务逻辑,以及要搭建什么样的服务。

socket.io 当时我第一次听说,就按照官网demo做了个例子(此处应有捂脸表情,没想到直接拿demo就用在项目上了)

demo 如下

app.listen(8081);

function handler (req, res) {
console.log(req.url); if(req.url.indexOf(‘/java’) > -1) {

let  xjh = getPar(req.url, 'xjh')
if(connArr[xjh])  {
  connArr[xjh].val.emit('message', getPar(req.url, 'status'));
  connArr[xjh].val.disconnect(true)
  delete connArr[xjh]
} 
res.writeHead(200, {'Content-Type': 'text/html'});      
res.end('');   }  }  

io.sockets.on(‘connection’, function (socket) {
let xjh ; socket.on(‘xjh’, function (data) {
xjh = data.xjh if(!connArr[xjh]) { connArr[xjh] = {id: xjh ,val:socket, status :0} } }); socket.on(‘disconnect’, function (socket) { delete connArr[xjh] console.log(‘disconnect’); }); });

function getPar(url,par){ //获取当前URL var local_url = url; //获取要取得的get参数位置 var get = local_url.indexOf(par +”=”); if(get == -1){ return false;
}
//截取字符串 var get_par = local_url.slice(par.length + get + 1);
//判断截取后的字符串是否还有其他get参数 var nextPar = get_par.indexOf(“&”); if(nextPar != -1){ get_par = get_par.slice(0, nextPar); } return get_par; } ````

很顺利的就搭建好了 socket的服务端。然后就想着利用swoole 也来写下这个逻辑。 没想到自己服务器上用了nginx转发socket 遇到了问题。最后怎么解决的 下次再说