当前位置: 首页 > news >正文

网站怎么做更新吗常州网站制作维护

网站怎么做更新吗,常州网站制作维护,依靠百度云做视频网站,室内设计师35岁后的出路webrtc建联流程图 由上图可知,所谓的信令服务器其实就是将peer的offer/candidate/answer传给对端而已。这样的话实现方式就有很多种了,目前普遍的方式HTTP/HTTPS,WS/WSS。像webrtc-demo-peerconnection就是实现HTTP这种方式。本文使用WS&…

webrtc建联流程图

由上图可知,所谓的信令服务器其实就是将peer的offer/candidate/answer传给对端而已。这样的话实现方式就有很多种了,目前普遍的方式HTTP/HTTPS,WS/WSS。像webrtc-demo-peerconnection就是实现HTTP这种方式。本文使用WS(websocket)来实现。

简单的协议

peer签到

发送

srctype
就是peer的名称signin

返回

typecodemsg
signin_ack返回码消息

peer数据传输

发送

srcdsttype其他内容
发送端名称接收端名称trans...

返回

typecodemsg
trans_ack返回码消息

实现代码

1、下载websocketpp/jsoncpp代码:github上找

2、下载boost库

3、先使用cmake生成VS工程,然后编译jsoncpp

4、创建工程SignalServer

主代码如下:

#include "pch.h"
#include <iostream>
#include <websocketpp/config/asio_no_tls.hpp>
#include <websocketpp/server.hpp>
#include <json/json.h>
typedef websocketpp::server<websocketpp::config::asio> server;
server signalserver;
std::mutex g_wcmutex;
std::map<std::string, websocketpp::connection_hdl> g_mapWcInfo;
void on_message(websocketpp::connection_hdl hdl, server::message_ptr msg) 
{
    std::string strMsg = msg->get_payload();
    //解析json
    Json::Reader reader;
    Json::Value jMsg;
    if (!reader.parse(strMsg, jMsg))
    {
        return;
    }
    //获取当前的用户名称
    std::string strSrcName;
    Json::Value jName;
    if (!jMsg.isMember("src"))
    {
        return;
    }

    jName = jMsg["src"];
    strSrcName = jName.asString();
    //获取当前的操作
    std::string strOptType;
    Json::Value jOptType;
    if (!jMsg.isMember("type"))
    {
        return;
    }

    jOptType = jMsg["type"];
    strOptType = jOptType.asString();
    //数据转发
    if (strOptType.compare("signin") == 0)//peer签到
    {
        try {
            g_wcmutex.lock();
            g_mapWcInfo[strSrcName] = hdl;
            g_wcmutex.unlock();
            signalserver.send(hdl, "{\"type_ack\":\"signin\",\"code\":200,\"msg\":\"success\"}", websocketpp::frame::opcode::text);
        }
        catch (websocketpp::exception const & e) {
            std::cout << "Echo failed because: "
                << "(" << e.what() << ")" << std::endl;
        }
    }
    else if (strOptType.compare("trans") == 0)//数据转发
    {
        std::string strDstName;
        Json::Value jDstName;
        if (!jMsg.isMember("dst"))
        {
            return;
        }
        jDstName = jMsg["dst"];
        strDstName = jDstName.asString();
        g_wcmutex.lock();
        if (g_mapWcInfo.find(strDstName) == g_mapWcInfo.end())
        {
            g_wcmutex.unlock();
            signalserver.send(hdl, "{\"trans_ack\":\"trans\",\"code\":201,\"msg\":\"failed\"}", websocketpp::frame::opcode::text);
            return;
        }
        else
        {
            signalserver.send(g_mapWcInfo[strDstName], strMsg, websocketpp::frame::opcode::text);
            signalserver.send(hdl, "{\"trans_ack\":\"trans\",\"code\":200,\"msg\":\"success\"}", websocketpp::frame::opcode::text);
        }
        g_wcmutex.unlock();

    }
}


void on_close(websocketpp::connection_hdl hdl)
{
    server::connection_ptr  ptr = signalserver.get_con_from_hdl(hdl);
    g_wcmutex.lock();
    std::map<std::string, websocketpp::connection_hdl>::iterator it = g_mapWcInfo.begin();
    while (it != g_mapWcInfo.end())
    {
        server::connection_ptr  ptr1 = signalserver.get_con_from_hdl(it->second);
        if (ptr1 == ptr)
        {
            g_mapWcInfo.erase(it);
            break;
        }
    }
    g_wcmutex.unlock();
}

int main() 
{
    signalserver.set_close_handler(&on_close);
    signalserver.set_message_handler(&on_message);
    signalserver.set_access_channels(websocketpp::log::alevel::all);
    signalserver.set_error_channels(websocketpp::log::elevel::all);
    signalserver.init_asio();
    signalserver.listen(9002);
    signalserver.start_accept();
    signalserver.run();
}

使用网页在线websocket测试:websocket在线测试

上面是一个最简的信令服务器。

http://www.zhongyajixie.com/news/30168.html

相关文章:

  • 人和动物做的网站百度知道一下首页
  • 如何更改wordpress模板北京百度seo价格
  • eclipse 开发jsp网站开发手机网站怎么优化关键词
  • 岳阳网站设计公司网店运营流程步骤
  • 百合视频做爰视频网站seo北京网站推广
  • 网站建设pqiw北京搜索排名优化
  • 社交网站 cms东莞网络推广及优化
  • 制作响应式网站百度搜索广告
  • 旅游网站用dw怎么做什么是互联网营销
  • 做侦探网站semir森马
  • 做视频网站新手教学裂变营销五种模式十六种方法
  • 没有rss源的网站如何做rss订阅百度网盘下载的文件在哪
  • 做网站域名解析广州seo排名优化公司
  • 网站规划与网页设计第二版百度快速收录接口
  • 做百科需要参考的网站小学生摘抄新闻
  • 做机械比较好的外贸网站搜索引擎优化教材答案
  • 网站到期续费吗seo推广软件哪个好
  • 武汉百度搜索优化dz论坛如何seo
  • 有网站了怎么设计网页白山seo
  • 网站图片设计兼职做百度网站一年多少钱
  • 日照做网站建设的公司自助建站网站模板
  • 专业搭建网站公司seo优化网站词
  • 模板网站怎么做301网片
  • 怎么做二级网站域名策划方案模板
  • 宏宇网站建设网站数据统计
  • 物流相关网站乐山网站seo
  • 做外贸网站企业中国职业培训在线官方网站
  • 深圳罗湖网站设计公司价格排名seo怎么样
  • 关键词排名优化易下拉系统百度搜索排行seo
  • 如何做个网站教程软文模板300字