Я изучаю WebRT C без случая использования сервера сигналов, URL-адрес:
https://github.com/lesmana/webrtc-without-signaling-server
Этот пример кода предназначен для чата только с текстом.
Я изменяю эти примеры кодов, чтобы они также могли успешно поддерживать видео.
URL-адрес кода завершения отправки:
https://cstsang.gossipcafe.hk: 442 / webrtc / веб-камера / звонящий. html
URL-адрес конечного кода получения:
https://cstsang.gossipcafe.hk: 442 / webrtc / веб-камера / вызываемый абонент. html
Процедура тестирования:
- Просмотрите "URL-адрес окончания отправки", поскольку все сообщения будут записываться в консоль, поэтому, пожалуйста, откройте представление консоли.
- Нажмите кнопку «создать предложение» и подождите несколько секунд. Если «предложение» успешно создано, текстовое поле будет заполнено строкой «предложение» json. Скопируйте все содержимое текстового поля.
- , затем откройте «Конечный URL-адрес получения» на новой вкладке, оно потому что все сообщения будут записываться на консоль, поэтому, пожалуйста, откройте представление консоли.
- Вставьте «предложение» в предоставленную текстовую область и затем нажмите кнопку «предложение вставлено»
- «Ответ» заполнит вторую текстовую область, затем скопирует «ответ»
- Go обратно на вкладку «конечный URL-адрес отправки», нажмите кнопку «отправить предложение»
- Будет показана новая текстовая область, вставьте «ответ» в эту текстовую область
- и затем нажмите кнопку «Ответ вставлен»
Указанные выше URL работают правильно даже на android устройствах.
Чтобы удалить описанную выше процедуру, я создаю приложение node.js на основе URL-кодировки.
Проблема в том, что я не знаю, почему удаленное видео не отображается. Снова все сообщения записываются в консоль, к сожалению, я не могу найти никаких сообщений об ошибках в консоли. URL-адрес тестирования:
https://webchat.gossipcafe.hk/
Процедура тестирования:
- Просмотрите вышеуказанный URL-адрес на компьютере с веб-камера (известная как компьютер А). Откройте представление консоли.
- Просмотрите вышеуказанный URL-адрес на другом компьютере (также называемом компьютером B), откройте также представление консоли.
- На компьютере A нажмите кнопку вызова после того, как через несколько секунд на удаленном экране компьютера B. должно отображаться видео.
Однако этого не происходит.
Я не могу найти ни одного сообщения об ошибке на консоли браузера.
Это исходный код сервера:
var fs = require('fs');
var https = require('https');
var express = require('express');
var app = express();
var options = {
key: fs.readFileSync('private.key'),
ca: [fs.readFileSync('ca_bundle.crt')],
cert: fs.readFileSync('certificate.crt')
};
var serverPort = 443;
var server = https.createServer(options, app);
var io = require('socket.io')(server);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.get('/common.js', (req, res) => {
res.sendFile(__dirname + '/common.js');
});
app.get('/style.css', (req, res) => {
res.sendFile(__dirname + '/style.css');
});
app.get('/WebRTC.js', (req, res) => {
res.sendFile(__dirname + '/WebRTC.js');
});
io.on('connection', function(socket) {
console.log('new connection');
socket.emit('message', 'This is a message from the dark side.');
});
io.on('connection', (socket) => {
console.log('a user connected');
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
socket.on("send_answer", (answer) =>{
console.log("receive an answer:"+answer);
socket.broadcast.emit("receive_answer",answer);
});
socket.on("send_offer", (offer) =>{
console.log("receive an offer:"+offer);
socket.broadcast.emit("receive_offer",offer);
});
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
server.listen(serverPort, function() {
console.log('server up and running at %s port', serverPort);
});
PS: оба сервера будут в автономном режиме с 1:00 до 7:00 (время HK, т.е. UTC + 8)