音视频(6)客户端与网页进行画面实时传输实现简易1对1视频-服务端Node开发

112 阅读1分钟

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情

引言

上一篇链接 -> 音视频(5)客户端与网页进行画面实时传输实现简易1对1视频-客户端开发

  • 本服务用于转发H.264编码数据,因此仅使用Express框架 + Socket.io
  • 需要Node环境 可以去官方下载安装

创建项目

创建文件并初始化

npm init

安装框架

npm install express
npm install socket.io

创建app.js启动文件

app.js

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http,{
    cors: {
      origin: "*", //设置跨域
      methods: ["GET", "POST"] //可用get和post请求
    }
  });
var cors = require('cors');
app.use(cors());

//链接socket
io.on('connection', function(socket){
    //链接成功后
    console.log('a user connected');
    //订阅消息
    socket.on('message', function(h264,w,h){
        //向web页面广播发布的消息
        io.emit('messageToClient', h264,w,h);
    });
});
//启动端口
http.listen(10086, function(){

});

执行服务

node app.js

补充

客户端同时也是需要用到socket服务 引入socketio

dependencies {
    //...
    implementation ('io.socket:socket.io-client:2.0.0') {
        exclude group: 'org.json', module: 'json'
    }
}

连接服务

Socket clientSocket;
try {
    clientSocket = IO.socket("http://IP地址:10086/");
    clientSocket.connect();
} catch (Exception e) {
    e.printStackTrace();
}

当编码完成后c调用java定义的getData方法接着调用socketio中emit()方法发送到Node服务中

public void getData(byte[] data,int w,int h) {
    clientSocket.emit("message",data,w,h);
}