websocket(多个客户端)

1.websocket是html5开始提供的一种浏览器和客户端进行全双工通讯的网络技术
现很多网站为了实现即时通讯,所用到的技术是轮询polling,使用websocket,浏览器和服务器只要做一个握手的动作,在两者之间形成快速通道

  1. 实时通讯,可以保持与客户端的长连接
  2. 节省资源:互相沟通的header大概2Bytes
  3. 推送信息:不需要客户端请求,服务器可以主动传送数据给客户端
    在这里插入图片描述

微信小程序的websocket

websocket.wxml:

<input bindchange="sendMsg"></input>

websocket.js(一个连接):

var wsApi='ws://192.168.2.126:3001'     //websocket是以ws为统一资源标志符,类似于 HTTPS
var openBol=false;
Page({

  data: {

  },
  onLoad(){
  //建立连接
    wx.connectSocket({
      url: wsApi,
      header:{
        'content-type': 'application/json'
      },
      protocols: ['protocol1'],
      success(){
        console.log('客户端连接成功')
      }
    })
    //通过 WebSocket 连接发送数据。需要先 wx.connectSocket,并在 wx.onSocketOpen 回调之后才能发送。
    wx.onSocketOpen(function(){
      console.log('websocket连接以成功')
      openBol=true
    })
    wx.onSocketMessage((result) => {
      console.log(result)
    })
  },
  sendMsg(e){
    if(openBol){
      wx.sendSocketMessage({
        data: e.detail.value,
      })
    }
  }

})

网页端

socket.html (另一个连接)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>sockets</title>
</head>
<body>
    <input type="text" id="txt1">
    <script>
        var socket=new WebSocket("ws://192.168.2.126:3001")
        socket.onopen=function(){
            console.log('connect to server')
        }
        socket.onmessage=function(ev){
            console.log(ev.data)
        }
        var txt1=document.getElementById('txt1')
        txt1.onchange=function(){
            socket.send(this.value)
        }
    </script>
</body>
</html>

websock

server.js:(需要安装ws模块,这里主要是使用了node,通过node server.js 命令进行启动)

var WebsocketServer=require('ws').Server;
var wss=new WebsocketServer({
    port:3001
})
var sockets=[]   //空数组,保存所有socket对象
//当客户端有连接进入的时候会触发connection 事件
wss.on('connection',function(ws){
    sockets.push(ws)      //将所有的socket对象push进数组中
    console.log('服务器端连接建立成功')
   
    ws.on('message',function(msg){//监听事件,当客户端发送信息给服务器时,触发
        console.log(msg)
        for(var i=0;i<sockets.length;i++){
            sockets[i].send(msg)
        }
       
    })
    ws.on('close',function(){//监听事件,当客户端关闭连接时,触发
        for(var i=0;i<sockets.length;i++){
            if(sockets[i]==this){  //把关闭连接的websocket对象从sockets数组中移除
                sockets.splice(i,1)
                break;
            }
        }
    })
})
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity是一款流行的跨平台游戏引擎,它也提供了一套完整的网络通信解决方案,包括支持WebSocket协议的服务器和客户应用程序。 在Unity中,可以使用WebSocket Sharp这个第三方插件来实现WebSocket通信。WebSocket Sharp是一个开源的C#实现的WebSocket协议库,它可以让我们在Unity中轻松地创建WebSocket服务器和客户应用程序。 对于WebSocket服务器,我们可以在Unity中创建一个新的C#脚本,并使用WebSocket Sharp库来编写服务器逻辑。我们可以定义连接、断开连接时的回调函数,并处理接收到的消息。服务器可以与多个客户建立连接,并通过WebSocket协议进行双向通信。例如,我们可以使用WebSocket服务器在游戏中实现多人联机功能,让多个客户之间进行实时的数据交互。 对于WebSocket客户,我们同样可以使用WebSocket Sharp库来创建。在Unity中,我们可以创建一个新的C#脚本,使用WebSocket Sharp库来编写客户的逻辑。客户可以连接到一个WebSocket服务器,并发送消息给服务器,也可以接收服务器发送过来的消息。客户可以在游戏中与其他玩家或服务器进行实时通信,或者接收实时更新的数据。 总的来说,Unity提供了强大的网络通信解决方案,包括WebSocket服务器和客户应用程序。借助WebSocket Sharp库,我们可以用C#在Unity中开发WebSocket服务器和客户,并通过WebSocket协议实现实时通信和数据交互。这为我们开发基于网络的游戏和应用程序提供了很大的便利和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值