WebSocket网络接口

来源:互联网 发布:whip it 编辑:程序博客网 时间:2024/06/05 03:02

服务端:

//http://www.open-open.com/lib/view/open1402479198587.html
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.get('/hello', function(req, res){
 res.setHeader("Access-Control-Allow-Origin", "*");
 res.send('hello');
});

//在线用户
var onlineUsers = [];

io.on('connection', function(socket){
 console.log('a user connected');
 
 //监听新用户加入
 socket.on('login', function(obj){
  //将新加入用户的唯一标识当作socket的名称,后面退出的时候会用到
  socket.name = obj.name;
  
  //检查在线列表,如果不在里面就加入
  if(onlineUsers.indexOf(obj.name) == -1) {
   onlineUsers.push(obj.name);   
   //向所有客户端广播用户加入
   io.emit('login', {onlineUsers:onlineUsers});
   console.log(obj.name+'加入了聊天室');
  }else{
   socket.send('已存在相同用户')   
  }  
 });
 
 //监听用户退出
 socket.on('disconnect', function(){
  //将退出的用户从在线列表中删除
  if(onlineUsers.indexOf(socket.name) != -1) {
   //退出用户的信息
   onlineUsers.splice(onlineUsers.indexOf(socket.name),1)
      
   //向所有客户端广播用户退出
   io.emit('logout', {onlineUsers:onlineUsers});
   console.log(socket.name+'退出了聊天室');
  }
 });
 
 //监听用户发布聊天内容
 socket.on('message', function(obj){
  //向所有客户端广播发布的消息
  io.emit('message', obj);
  console.log(obj.name+'说:'+obj.content);
 });
 
});

http.listen(8081, function(){
 console.log('listening on *:8081');
});

 

客户端:

var SocketIO = SocketIO || io
cc.Class({
    extends: cc.Component,

    properties: {
        nameLabel:cc.EditBox,
        contentLabel:cc.Label,
        inputLabel:cc.EditBox,
        _nameArr:[],
        _ipAdd:"",
        _port:0,
        _socket:null
    },
    loginHandler:function () {
        this._ipAdd = "http://192.168.1.162";
        this._port = 8081;
        var num
        var that = this
        var socket = SocketIO.connect(this._ipAdd+":"+this._port);
        this._socket = socket
        socket.on('connect', function(){
            cc.log('connect')
            socket.emit('login',{name:that.nameLabel.string});
        });
        socket.on('login', function(data){
            that._nameArr.push(data.onlineUsers[0])
            that.outputTxt(data.onlineUsers[data.onlineUsers.length-1]+" 登录成功")
            cc.log('someone login', data)
        });
        socket.on('message', function(data){
            that.outputTxt(data.name+":"+data.msg)
            cc.log('get event', data)
        });
        socket.on('disconnect', function(){
            cc.log('disconnect')
        });
    },
    // use this for initialization
    onLoad: function () {

    },
    outputTxt:function(txt){
        this.contentLabel.string += txt+"\n"
    },

    sendHandler:function () {
        var that = this
        this._socket.emit('message', {name:that.nameLabel.string, msg:that.inputLabel.string})
    }
});

 

 

0 0
原创粉丝点击