如何解决如何在屏幕共享HTML页面中应用signalR.js
我正在开发需要共享屏幕的Blazor应用程序。一旦Razor页面从客户端(这是一个Electron应用程序)接收到已发送的消息,我就找到了如何读取和显示屏幕的信息。这是电子应用程序的代码。
const { desktopCapturer } = require('electron')
const signalR = require('@microsoft/signalr')
let connection;
let subject;
let screenCastTimer;
let isstreaming = false;
const framepersecond = 10;
const screenWidth = 1280;
const screenHeight = 800;
async function initializeSignalR() {
connection = new signalR.HubConnectionBuilder()
.withUrl("http://localhost:51064")
.configureLogging(signalR.LogLevel.information)
.build();
connection.on("NewViewer",function () {
if (isstreaming === false)
startStreamCast()
});
connection.on("NoViewer",function () {
if (isstreaming === true)
stopStreamCast()
});
await connection.start().then(function () {
console.log("connected");
});
return connection;
}
initializeSignalR();
function CaptureScreen() {
return new Promise(function (resolve,reject) {
desktopCapturer.getSources({ type: ['screen'],thumbnailSize: { width: screenWidth,height: screenHeight } },(error,sources) => {
if (error) console.error(error);
for (const source of sources) {
if (source.name === 'Entire screen') {
resolve(source.thumbnail.toDataURL())
}
}
})
})
}
const agentName = document.getElementById('agentName');
const startCastBtn = document.getElementById('startCast');
const stopCastBtn = document.getElementById('stopCast');
stopCastBtn.setAttribute("disabled","disabled");
startCastBtn.onclick = function () {
startCastBtn.setAttribute("disabled","disabled");
stopCastBtn.removeAttribute("disabled");
connection.send("AddScreenCastAgent",agentName.value);
};
function startStreamCast() {
isstreaming = true;
subject = new signalR.Subject();
connection.send("StreamCastData",subject,agentName.value);
screenCastTimer = setInterval(function () {
try {
CaptureScreen().then(function (data) {
subject.next(data);
});
} catch (e) {
console.log(e);
}
},Math.round(1000 / framepersecond));
}
const { desktopCapturer } = require('electron')
const signalR = require('@microsoft/signalr')
desktopCapturer.getSources({ type: ['screen'],
在使用signalR.js的HTML页面中。
非常感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。