吉林快三走势图一定牛:Web RTCLib 开发指南

    注:由于底层引擎技术升级,3.0.0 及之后版本的 RTCLib SDK 与 3.0.0 之前版本的 RTCLib SDK 不能互通。使用 RTCLib 3.0.0 SDK 时必须使用 Web IMLib 2.4.0 及以上版本进行集成。
    如您使用的是音视频 1.6.3 版本,详细可查看 RTCLib 1.6.3 开发指南

    概述

    十一选五开奖结果 www.41le1.cn 兼容性说明:

    平台 Chrome57+ Safari 12+ Electron2.0+
    Windows7+ Yes N/A Yes
    macOS Yes Yes Yes

    订阅分发说明:

    RTC SDK 3.0.0 将资源发布与订阅分离,可满足更为复杂的应用场景且更具灵活性,可按需订阅音频流、视频流或音视频流

    可通过以下图例说明 RTC SDK 2.0.0 与 3.0.0 区别

    RTC SDK V2.0:

    image

    图解

    • A 可见 B、C、D 的音频、视频

    • B 可见 A、C、D 的音频、视频

    • C 可见 A、B、D 的音频、视频

    • D 可见 A、B、C 的音频、视频

    RTC SDK V3.0:

    image

    图解

    • A 可见 B、C、D 的音频、视频

    • B 可按需选择只听 A、D 的音频,只看 A、C 的视频

    • C 可按需选择只听 A、B、D 的音频,但不看其他人视频

    • D 可按需选择只看 A、B、C 的视频,但不听其他人的音频

    事件触发说明:

    RongRTC 及各??槭录τ貌憔欢邮?,SDK 在对应节点自动抛出相应事件,用来监控房间成员、RongRTC 实例变化

    自己主动触发相关接口通过 Promise 返回,成员变化通过事件通知

    如:当房间内有人离开会触发 room.left 事件,但调用 room.leave 则通过 Promise 返回

    同一房间最多支持音视频同时通话人数

    1. 单个房间内最多允许 9 人同时进行视频通话
    2. 单个房间内最多允许 20 人同时进行音频通话

    注:同一房间中可发起音视频通话总用户上限为 20 人,同一房间中订阅音视频信息用户数没有限制。

    快速集成

    集成步骤

    image

    流程说明:

    1. 注册成为开发者:需要在融云开发后台注册账号,开发后台地址 https://developer.www.41le1.cn

    2. 创建融云应用:成为开发者后,可在开发者后台创建应用,创建成功后会得到 AppKey、Secret,后续使用

    3. 开通音视频服务:使用音视频业务需要优先开通,开通位置:开发者后台 -> 应用 -> 音视频服务 -> 服务设置

    4. 准备静态资源服务器:浏览器限制必须是 HTTPS//localhost:port 方可采集媒体资源,需要准备本地服务,若无本地服务推荐: NginxNode.js Puer

    5. 创建 HTML:为 SDK 提供入口,此处可按项目实际需要创建

    6. 引入 Web IM SDK:引入 IM SDK 可参考 引入方式

    7. 引入 Web RTC SDK:引入 RTC SDK 可参考 引入方式

    8. Web IM SDK 连接服务器:使用 RTC SDK 需要首先使用 IM SDK 连接至融云云服务,连接 IM SDK 请参考: IM SDK Connect

    9. 实例化 Web RTC SDK:RTC SDK 依赖 IM SDK,实例化 RTC SDK 时需将 IM SDK 作为参数传入,详细参考 new RongRTC()

    10. 开始 RTC 业务:以上步骤准备完成后可开始音视频业务,API 列表可参考,接口列表

    IM SDK & RTC SDK

    RTC SDK 强依赖 IM SDK ,使用 RTC SDK 必须引入 IM SDK ,引入方式可参考示例,版本对应关系如下:

    更新日期 RTC 版本 IM 版本
    2019.03.30 3.0.0 2.4.0 及以上版本

    引入 SDK

    音视频 SDK 支持以下引入方式,任选其一即可:

    // Normal
    <script src="http[s]://cdn.ronghub.com/RongRTC.3.0.2[.min].js"></script>
    
    // ES6
    import RongRTC from 'RongRTC.3.0.2[.min]';
    
    // RequireJS
    require.config({
      paths: {
        RongRTC: '//cdn.ronghub.com/RongRTC.3.0.2[.min]'
      }
    });
    require(['RongRTC'], function(RongRTC) {
      // ...
    });
    

    开始集成:

    集成可参考示例或按需使用相应 API

    基础功能

    ??榱斜恚?/strong>

    ???/th> 描述
    Room 房间???,提供自己加入、退出房间能力,成员加入退出房间事件
    Stream 媒体流???,提供发布、取消发布、订阅、取消订阅、获取 MeidaStream
    Message 消息???,提供向房间内发送消息能力
    Device 设备???,提供获取当前机器可用音视频设备列表
    Storage 存储???,提供设置、移除、获取数据能力(数据存储时间与房间生命周期一致)

    接口列表:

    接口 描述
    room.join(user) 加入房间,发布流、订阅流前需加入房间,加入后,房间成员会收到有人加入通知
    room.leave() 离开房间,离开后房间成员会收到有人离开通知
    room.get() 获取房间信息
    stream.publish(user) 发布资源,发布后房间成员会收到有人发布资源通知
    stream.unpublish(user) 取消发布,取消发布后房间成员会收到有人取消发布通知
    stream.subscribe(user) 订阅资源,房间成员发布资源后,订阅后方可进行音视频通话
    stream.unsubscribe(user) 取消订阅,取消订阅房间成员发布资源
    stream.resize(user) 切换大小流,大小窗口切换时可将小窗口切为小资源流,节省带宽、流量
    stream.get(option) 获取本地媒体流,支持获取屏幕共享、摄像头资源流
    message.send(msg) 发送消息,向房间内发送消息,内容可自定义
    device.get() 获取音视频输入、输出设备列表
    storage.set(key, value, [message]) 设置数据,设置后房间成员共享,多人设置 key 相同,后者会覆盖前者
    storage.get(key) 获取数据,获取房间成员或当前成员设置的数据
    storage.remove(key, [message]) 移除数据,按 key 移除,不区分成员

    创建 RongRTC 实例

    创建 RongRTC 实例后,可得到所有???,RongRTC 可被实例化多次,实例之间保持独立

    RongRTC 生命周期如下:

    image

    以下 RongRTC 实例 简称 rongRTC

    • 实例化后需设置事件监听器,请参考各??槭道椒ㄉ柚檬录?Room、Stream

    • 加入房间成功后等待其他成员加入,成员加入后,当前用户的 room.joined 事件将会触发,成员媒体流到本地后触发 stream.published,按需订阅

    • 离开房间后并不会销毁 rongRTC

    • rongRTC.destroy() 触发后销毁实例

    • rongRTC 销毁后,实例下所有方法均不可调用

    option 对象说明:

    参数 类型 必填 默认值 说明 最低版本
    RongIMLib object RTC SDK 以来 IM SDK,使用 RTC 需先引入 3.0.0
    debug boolean false 调试模式,开启后 SDK 自动向控制台输出日志 3.0.0
    logger function 日志收集器,可将 SDK 内部日志收集,分析排查问题 3.0.0
    created function RongRTC 实例已被创建 3.0.0
    mounted function RongRTC 各??橐鸭釉赝瓿汕业鼻俺稍奔尤敕考涑晒?,可开始后续业务 3.0.0
    destroyed function 实例被销毁 3.0.0
    error function RongRTC 全局错误捕获事件,如:网络断开、IM SDK 不可用等,更多请参考错误码 3.0.0

    示例:

    let rongRTC = new RongRTC({
      // 开启调试模式,SDK 会向控制台输出日志,默认 false
      debug: true,
      // IM SDK ,使用可参考: //www.41le1.cn/docs/web.html#sdk
      RongIMLib: RongIMLib,
      created: function(){
      },
      mounted: function(){
      },
      destroyed: function(){
      },
      error: function(error){
    
      }
    });
    let { Room, Stream, Message, Device, Storage} = rongRTC;
    // 按需调用各??槭道?API
    

    房间接口

    Room ??榭赏ü?RongRTC 获取

    new Room(option)

    option 对象说明:

    参数 类型 必填 默认值 说明 最低版本
    id string 房间 Id,长度 64 个字符,可包含:A-Z、a-z、0-9、+、=、-、_ 3.0.0
    joined function 加入房间后,有人加入通知事件 3.0.0
    left function 加入房间后,有人离开通知事件 3.0.0

    事件返回参数 user 说明:

    属性 类型 说明 最低版本
    id string 成员 Id,用以区分当前加入、离开成员 3.0.0

    示例:

    var room = new Room({
      id: 'roomId',
      joined: function(user){
        // user.id 加入房间
      },
      left: function(user){
        // user.id 离开房间
      }
    });
    

    room.join(user)

    room 实例获取方式,参考 Room 实例化

    加入房间, 每个 RongRTC 实例只允许加入 一个 房间

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 当前成员 ID 3.0.0

    示例:

    let user = {
      id: 'djdka1901'
    };
    room.join(user).then(() => {
      console.log('join successfully');
    }, error => {
      console.log(error);
    });
    

    room.leave()

    room 实例获取方式,参考 Room 实例化

    退出房间,退出后将不能再与其他成员进行音视频通话

    room.leave().then(() => {
      console.log('leave successfully');
    }, error => {
      console.log(error);
    });
    

    room.get()

    room 实例获取方式,参考 Room 实例化

    获取房间基本信息

    room.get().then(room => {
      console.log(room);
    }, error => {
      console.log(error);
    });
    

    返回值 room 说明:

    属性 类型 说明 最低版本
    id string 房间 Id 3.0.0
    total number 房间存在人数(发布资源 + 未发布资源) 3.0.0
    -- -- 包含调用 Storage 自定义的属性 3.0.0

    媒体流

    Stream ??榭赏ü?RongRTC 实例 获取

    new Stream(option)

    option 对象说明:

    参数 类型 必填 默认值 说明 最低版本
    bitrate object 推送媒体流码率 3.0.0
    published function 成员发布资源,此时可按需订阅 3.0.0
    unpublished function 成员取消发布资源 3.0.0
    disabled function 成员禁用摄像头 3.0.0
    enabled function 成员启用摄像头 3.0.0
    muted function 成员静音 3.0.0
    unmuted function 成员取消静音 3.0.0

    事件返回参数 user 说明:

    属性 类型 说明 最低版本
    id string 成员 Id 3.0.0
    stream object 成员发布媒体流对象 3.0.0

    事件返回参数 user.stream 说明:

    属性 类型 说明 最低版本
    tag string 资源唯一标识 3.0.0
    type number 发布资源类型 3.0.0
    mediaStream MediaStream MediaStream 对象,可直接渲染至 UI 3.0.0

    示例:

    let stream = new Stream({
      /* 成员已发布资源,此时可按需订阅 */
      published: function(user){
        stream.subscribe(user).then((user) => {
          let {id, stream: {tag, mediaStream}} = user;
          let node = document.createElement('video');
          node.srcObject = mediaStream;
          // 将 node 添加至页面或指定容器
        });
      },
      /* 成员已取消发布资源,此时需关闭流 */
      unpublished: function(user){
        stream.unsubscribe(user);
      },
      /* 成员禁用摄像头时触发,此时需关闭视频流 */
      disabled: function(user){
        stream.unsubscribe(user);
      },
      /* 成员启用摄像头时触发,此时需要重新打开视频流 */
      enabled: function(user){
        stream.subscribe(user);
      },
      /* 成员禁用麦克风时触发 */
      muted: function(user){
    
      },
      /* 成员禁用麦克风时触发,此时需要重新打开此成员声音 */
      unmuted: function(user){
        stream.subscribe(user);
      }
    });
    

    stream.get(constraints)

    获取本地资源,支持获取屏幕共享、摄像头资源

    constraints 对象说明:

    参数 类型 必填 默认值 说明 最低版本
    height number 480 视频流高 3.0.0
    width number 640 视频流宽 3.0.0
    frameRate number 15 帧率 3.0.0
    screen boolean false 设置为 true 获取屏幕媒体流 (仅 Chrome 有效) 3.0.0
    desktopStreamId string 窗口 Id,通过 Chrome 插件可获取 3.0.0
    deviceId string 存在多摄像头设备,可通过此属性指定设备,用 device.get() 获取 deviceId 3.0.0

    示例:

    // 获取摄像头
    stream.get().then(function ({ mediaStream }) {
      console.log(mediaStream);
    }, error => {
      console.error(error);
    });
    // 获取屏幕共享
    stream.get({
      screen: true,
      // 详细示例请参考: //rongcloud.github.io/websdk-demo/rongrtc/screenshare/screenshare.html
      desktopStreamId: 'desktopStreamId'
    }).then(function ({ mediaStream }) {
      console.log(mediaStream);
    }, error => {
      console.error(error);
    });
    

    stream.publish(user)

    SDK 支持发布多路媒体流,发布后 SDK 会向服务器推送多路流,其他平台收到多路流,可按需展示

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 成员 ID 3.0.0
    stream object 资源对象 3.0.0

    user.stream 参数说明:

    参数 类型 必填 说明 最低版本
    tag string 资源唯一标识 3.0.0
    type number 发布资源类型 3.0.0

    示例:

    // 示例中以添加 video 节点流为例,可添加其他 MediaStream 对象,如: 屏幕共享、多摄像头等
    let videoNode = document.querySelector('#target');
    let mediaStream = videoNode.captureStream();
    let user = {
      id: 'dadklyeu78',
      stream: {    
        tag: '自定义流标签',
        type: StreamType.VIDEO_AND_AUTIO,
        mediaStream: mediaStream
      }
    };
    stream.publish(user).then(result => {
      let { user, stream } = result;
      /*
        user => 成员对象
        stream => {
          tag: '自定义流标签',
          kind: 'output',
          type: 当前 stream 类型
          mediaStream: MediaStream
        }
      */
      console.log(user, stream);
    }, error => {
      console.log(error);
    });
    

    stream.unpublish(user)

    取消发布

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 成员 ID 3.0.0
    stream object 资源对象 3.0.0

    user.stream 参数说明:

    参数 类型 必填 说明 最低版本
    tag string 资源唯一标识 3.0.0
    type number 发布资源类型 3.0.0

    示例:

    let user = {
      id: 'dadklyeu78',
      stream: {
        tag: '自定义流标签',
        type: StreamType.VIDEO_AND_AUTIO
      }
    };
    stream.unpublish(user).then(result => {
      console.log('取消推送成功');
    }, error => {
      console.log(error);
    });
    

    stream.subscribe(user)

    订阅房间内成员发布资源

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 成员 ID 3.0.0
    stream object 资源对象 3.0.0

    user.stream 参数说明:

    参数 类型 必填 说明 最低版本
    tag string 资源唯一标识 3.0.0
    type number 发布资源类型 3.0.0

    示例:

    let user = {
      id: 'dadklyeu78',
      stream: {
        tag: '自定义流标签',
        type: StreamType.VIDEO_AND_AUTIO
      }
    };
    stream.subscribe(user).then(user => {
      let {id, stream: {tag, mediaStream}} = user;
      let node = document.createElement('video');
      node.srcObject = mediaStream;
      // 添加 node 至页面或容器
    }, error => {
      console.log(error);
    });
    

    stream.unsubscribe(user)

    取消订阅成员资源

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 成员 ID 3.0.0
    stream object 资源对象 3.0.0

    user.stream 参数说明:

    参数 类型 必填 说明 最低版本
    tag string 资源唯一标识 3.0.0
    type number 发布资源类型 3.0.0

    示例:

    let user = {
      id: 'dadklyeu78',
      stream: {
        tag: '自定义流标签',
        type: StreamType.VIDEO_AND_AUTIO
      }
    };
    stream.unsubscribe(user).then(() => {
      console.log(`取消订阅 ${user.id} 媒体流成功`);
    }, error => {
      console.log(error);
    });
    

    stream.resize(user)

    改变房间内成员媒体流大小方法,在大小窗口切换时可将小窗口设置为小流,用来节省带宽,详细请参考 StreamSize

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 成员 ID 3.0.0
    stream object 资源对象 3.0.0

    user.stream 参数说明:

    参数 类型 必填 说明 最低版本
    tag string 资源唯一标识 3.0.0
    type number 发布资源类型 3.0.0

    示例:

    let user = {
      // 房间内成员 Id
      id: 'kdad18dka',
      stream: {
        tag: '自定义流标签',
        type: StreamType.VIDEO_AND_AUTIO,
        size: StreamSize.MIN
      }
    };
    Stream.resize(user);
    

    audio.mute(user)

    静音指定成员,静音后当前成员将无法听到指定成员声音

    例如: A、B、C 三人进行音视频通话,AB 静音后,A 无法听到 B 的声音, C 不受影响,依然可听到 B 的声音

    Audio 实例可通过 Stream 实例 获取

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 当前成员 ID 3.0.0

    示例:

    let {audio: audioStream} = stream;
    let user = {
      id: 'diajle91',
      stream: {
        tag: '自定义流标签'
      }
    };
    audioStream.mute(user);
    

    audio.unmute(user)

    取消静音,audio 实例可通过 stream 实例 获取

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 当前成员 ID 3.0.0

    示例:

    let {audio: audioStream} = stream;
    let user = {
      id: 'diajle91',
      stream: {
        tag: '自定义流标签'
      }
    };
    audioStream.unmute(user);
    

    video.disable(user)

    video 实例可通过 Stream 实例 获取

    禁用指定成员摄像头,禁用后将无法看到指定成员视频

    例如: A、B、C 三人进行音视频通话,AB 视频流禁用后,A 无法看到 B 的视频流, C 不受影响,依然可看到 B 的视频流

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 当前成员 ID 3.0.0

    示例:

    let {video: videoStream} = stream;
    let user = {
      id: 'dadklyeu78',
      stream: {
        tag: '自定义流标签'
      }
    };
    videoStream.disable(user);
    

    video.enable(user)

    video 实例可通过 Stream 实例 获取

    启动指定成员摄像头,启用后将看到指定成员视频

    user 参数说明:

    参数 类型 必填 说明 最低版本
    id string 当前成员 ID 3.0.0

    示例:

    let {video: videoStream} = stream;
    let user = {
      id: 'dadklyeu78',
      stream: {
        tag: '自定义流标签'
      }
    };
    videoStream.enable(user);
    

    消息接口

    Message ??榭赏ü?RongRTC 获取

    new Message(option)

    option 对象说明:

    参数 类型 必填 默认值 说明 最低版本
    received function 消息监听,房间内有成员发送消息后触发 3.0.0

    事件返回参数 message 说明:

    属性 类型 说明 最低版本
    name string 消息名称 3.0.0
    content object 发送时设置的消息内容 3.0.0
    direction number 消息方向,1: 发送、2: 接收 3.0.0
    senderId string 消息发送者 Id 3.0.0
    uId string 消息唯一标识 3.0.0
    let message = new Message({
      received: (message) => {
        // 收到房间内消息
      }
    });
    

    message.send(msg)

    发送消息, 通过此接口向房间内发送消息,房间内成员收到消息后会触发 received

    msg 参数说明:

    参数 类型 必填 说明 最低版本
    name string 消息名称 3.0.0
    content object 消息内容 3.0.0

    示例:

    let name = 'RCRTC:Welcome';
    let content = {
      title: '欢迎小明加入房间'
    };
    message.send({
      name,
      content
    }).then(() => {
      console.log('Send Successfully');
    }, (error)=> {
      console.log(error);
    });
    

    设备信息

    Device ??榭赏ü?RongRTC 获取

    new Device(option)

    let device = new Device();
    

    device.get()

    获取当前机器可用的输入、输出设备列表

    device.get().then((devices) => {
      console.log(devices);
    });
    

    数据存储

    Storage ??榭赏ü?RongRTC 获取

    设计此??榈哪康氖俏嗽谑悠低ɑ爸邢蚍考淠诔稍惫蚕硎?、房间内通知

    数据存储??樘匦裕?/strong>

    1. 融云云服务提供的数据存储能力

    2. 支持更新数据同时向房间发送通知

    3. 存储有效期与房间生命周期一致

    4. 存储数据房间内共享

    设置数据不区分成员,相互覆盖,例如:

    李雷 先设置 key 为 name, value 为 LiLei

    韩梅梅 再设置 key 为 name, value 为 HanMeiMei

    此时服务端存储 key 为 name 的数据是 HanMeiMei

    new Storage(option)

    let storage = new Storage();
    

    storage.set(key, value, [message])

    设置数据

    user 参数说明:

    参数 类型 必填 说明 最低版本
    key string 数据 key 值 3.0.0
    value string 对应 Value 3.0.0
    message object 通知消息 3.0.0

    示例:

    // 不需要消息通知
    let key = 'name';
    let value = 'LiLei';
    storage.set(key, value);
    
    // 需要消息通知
    let key = 'name';
    let value = 'LiLei';
    let message = {
      // 消息名称,格式建议 字母:描述 定义
      name: 'C:WelCome',
      content: '大家好,我是 LiLei'
    };
    storage.set(key, value, message);
    

    storage.get(key)

    获取数据

    user 参数说明:

    参数 类型 必填 说明 最低版本
    key string 数据 key 值 3.0.0

    示例:

    // 获取单个 key 值
    let key = 'name';
    storage.get(key).then((value) => {
      console.log(value);
    });
    
    // 此接口支持获取多个 key 对应的 value
    let keys = ['name', 'age'];
    storage.get(keys).then((values) => {
      console.log(values);
    });;
    

    storage.remove(key, [message])

    删除数据

    user 参数说明:

    参数 类型 必填 说明 最低版本
    key string 数据 key 值 3.0.0
    message object 通知消息 3.0.0

    示例:

    // 不需要消息通知
    let key = 'name';
    storage.remove(key);
    
    // 需要消息通知
    let key = 'name';
    let message = {
      // 消息名称,格式建议 字母:描述 定义
      name: 'Share:PPT',
      content: 'LiLei 取消共享 PPT'
    };
    storage.remove(key, message);
    

    枚举值

    枚举对象均在 RongRTC 实例下,示例:

    let { StreamType, StreamSize } = rongRTC;
    

    StreamSize

    StreamSize 说明:

    名称 说明 最低版本
    StreamSize.MAX 1 接受指定成员大流时使用 3.0.0
    StreamSize.MIN 2 接受指定成员小流时使用 3.0.0

    StreamType

    StreamType 说明:

    名称 说明 最低版本
    StreamSize.AUDIO 0 音频 3.0.0
    StreamSize.VIDEO 1 视频 3.0.0
    StreamSize.VIDEO_AND_AUDIO 2 音频 + 视频 3.0.0

    基于 SDK 常用功能实现

    屏幕共享

    屏幕共享示例://rongcloud.github.io/websdk-demo/rongrtc/screenshare/screenshare.html

    屏幕共享源码:https://github.com/rongcloud/websdk-demo/blob/master/rongrtc/screenshare/screenshare.html

    会议控制及白板功能

    会控功能主要是利用发布控制类消息,详细查参考融云 SealClass 开源项目

    API 调用示例

    API 示例地址:https://rongcloud.github.io/websdk-demo/rongrtc/api/api.html

    API 源码地址:十一选五开奖结果

    常见问题

    • 同一房间最多支持多少人音视频同时通话?

      单个房间内最多允许 9 人同时进行视频通话,最多允许 20 人同时进行音频通话,同一房间中订阅音视频信息用户数没有限制。

    • 使用 RongRTCLib SDK 集成实时音视频可以自行限制人数吗?

      可以,如需要限制视频人数小于 9 人,音频人数小于 20 人,需要开发者自行实现,限制不允许用户加入房间就可以了。

    错误码

    集成融云 SDK 过程中,如遇到问题可查看常见状态码及处理表。

  • “电商定制”价廉未必物美 成为“低价劣质”代名词 2019-04-23
  • 【学习时刻】中国人民大学副校长刘元春:中央经济工作会议的四大亮点 2019-04-23
  • 生态环境部提出通过治罪问责两条线严惩 2019-04-23
  • 40年来的改革开放取得了伟大的成就,我们应该看到,以增强我们的自信;但这40年来,我国也出现了十分严重的社会问题,我们也必须看到,有些问题是40年前未曾有过并已 2019-04-23
  • 上海宣讲十九大:从石库门出发,深入党心民心 2019-04-22
  • 辽宁省公安厅治安总队举行整治黄赌枪爆成果展 2019-04-22
  • 马来西亚以谋杀罪起诉两名涉嫌杀害朝鲜男子的女子 2019-04-22
  • 中国国际智能产业博览会LOGO征集选用公告 2019-04-22
  • 公安部A级通缉十大电信网络诈骗犯罪嫌疑人全部落网 2019-04-21
  • 2017“大地飞歌”门票热销 电子票卡可乘公交地铁 2019-04-21
  • 海峡两岸青年交流:一灯引千灯 灯灯相辉映 2019-04-21
  • “蝇贪”扑面硕鼠村官难禁 基层“一把手”违纪多发 2019-04-20
  • 回复@不能这样啊:不谋生就不能谋自我实现啊?你以为都跟瓜娃子一样只相反谋生? 2019-04-20
  • 政协网络在线-天山网 2019-04-20
  • 人民网评:跨越生态文明建设的“三期”关口 2019-04-19
  • 448| 507| 544| 606| 548| 71| 271| 778| 994| 908|