美文网首页
Websocket 使用即时通信服务器基本搭建

Websocket 使用即时通信服务器基本搭建

作者: 越天高 | 来源:发表于2020-08-07 09:52 被阅读0次

是HTML5的一种新协议,实现浏览器与服务器之间的全双工通信,能更好的节省服务器资源和带宽来实现即时通讯,他是建立在TCP基础上面的,和http一样通过TCP来传输数据
在建立连接后,客户端和服务器都能主动向对方发送或接收数据,就像socket一样
SocketIO只有swift框架,
简单搭建,首先倒入express和socket.io框架

nom init
npm i express --save
npm i socket.io --save

websocket的协议头是ws开头,

//服务器端的代码

// 引入http模块
var http = require('http')
// 引入socket模块
var socketIO = require('socket.io')
//创建web服务器
const server = http.createServer();
// 创建socket服务器
const serverSocket = socketIO(server);
// 监听客户端有没有连接成功,如果连接成功,发送connect事件,通知客户端连接成功
// 第二次握手
serverSocket.on('connection', function(clientSocket) 
{
    console.log('客户端链接')
     // 建立socket连接
      // 监听chat聊天事件
    clientSocket.on('chat', function(data)
    {
        //收到事件
        console.log('hello')
        // data是客户端发过来数据
        //clientSocket.emit给当前客户端发送信息
        //serverSocket.emit是给所有连接上的客户端发消息,广播
        clientSocket.emit('chat','hello 客户端')
        console.log(data)
     });
});
server.listen(3000);
console.log('开始监听')

OC版APP客户端代码,简单实现

- (void)connectToServer
{
  //服务器url
#define ServerUrl @"http://192.168.1.6:3000"
    NSURL *url = [NSURL URLWithString:ServerUrl];
//因为版本原因。现在使用SocketManager来创建
    self.manager = [[SocketManager alloc] initWithSocketURL:url config:nil];
    SocketIOClient *client = self.manager.defaultSocket;
    //链接 第一次握手,看看能不能链接
    [client connect];
    //真正的链接
    //服务器给客户端发送连接之后,客户端才会再次像服务器发送connect事件,表示连接成功,第三次握手
    //只要链接成功服务器就会给client发送链接成功的事件
    [client on:@"connect" callback:^(NSArray* data, SocketAckEmitter* ack)
    {
        NSLog(@"socket connected");
        //发送chat事件
        [client emit:@"chat" with:@[@"nihao shijie"]];
        if (data.count > 0)
        {
            NSLog(@"%@",data.firstObject);
            NSLog(@"%@",data);
        }
    }];
    //监听chat的事件,接受服务器发送过来的数据
    [client on:@"chat" callback:^(NSArray * _Nonnull data, SocketAckEmitter * _Nonnull ack)
     {
        NSLog(@"%@", data);        
    }];
    
}

相关文章

网友评论

      本文标题:Websocket 使用即时通信服务器基本搭建

      本文链接:https://www.haomeiwen.com/subject/nozzrktx.html