标签: peerjs

使用 PeerJS 的 WebRTC - 是否适用于 Android 和 IOS 应用程序

我们一直在使用 PeerJS for web 开发一个 WebRTC 应用程序。

服务器端:NodeJS

客户端:HTML5/CSS/Javascript/Angularjs

我们 90% 在那里,它在 chrome firefox 中运行良好,但在 safari 中不起作用。我知道 safari 不支持 WebRTC。

是否有任何解决方法可以使它像任何插件一样在 safari 中工作?

我的第二个问题是,如果我复制我的网络代码并将其放入 phonegap 或 ionic 中,它是否可以在 Android 和 IOS 中使用。 我的意思是现在我们已经使用 peerJS 进行了一次聊天,它纯粹是一个 javascript 代码,可以在 Android 和 IOS 平台的 phonegap 或 ionic 应用程序中进行聊天

请分享您的想法,非常感谢。谢谢:-)

android ios webrtc cordova peerjs

6
推荐指数
1
解决办法
3431
查看次数

iceConnectionState 断开连接(当通过互联网使用时)

这个问题以前有人问过,但我还没有找到答案。我基本上遇到了与此处此处所述相同的问题。

我正在尝试使用 PeerJS 设置 webRTC 连接。它在 LAN 中完美运行,但我无法让它在 Internet 上工作。我使用 coturn 作为 TURN 服务器,但到目前为止这还没有解决问题。 Chromium 控制台打印出以下内容:

PeerJS:  Added ICE candidate for: client1
peer.js:1476 PeerJS:  Set remoteDescription: ANSWER for: client1
peer.js:1476 PeerJS:  Set remoteDescription: OFFER for: client1
peer.js:1476 PeerJS:  Set remoteDescription: ANSWER for: client1
peer.js:1476 PeerJS:  Received remote stream
peer.js:1476 PeerJS:  Receiving stream MediaStream
peer.js:1476 PeerJS:  Created answer.
peer.js:1476 PeerJS:  Set localDescription: answer for: client1
3peer.js:1476 PeerJS:  Received ICE candidates for: client1
3peer.js:1476 PeerJS:  Added ICE candidate …
Run Code Online (Sandbox Code Playgroud)

javascript webrtc peerjs coturn

6
推荐指数
1
解决办法
4390
查看次数

浏览器引擎是否限制 WebRTC 速度?

我正在使用 PeerJS,它是 WebRTC 的 JavaScript 实现。我用它通过 DataChannel 发送数据。

浏览器引擎有速度限制吗?

即使我的应用程序的两个实例都在同一台计算机上运行,​​我也无法发送超过 ~20MB/s 的数据。使用我的 Linux 机器的系统监视器可以看到数据没有通过网络发送。我已经尝试过 Chrome 和 Firefox。

有人使用 WebRTC 数据通道体验过更快的速度吗?我认为点对点连接应该是最快的数据传输方式,并且想知道这是我的实现还是协议问题。我知道窗口大小对性能尤其重要。PeerJS 的任何实际经验可能会有帮助吗?

p2p webrtc peerjs

6
推荐指数
1
解决办法
2665
查看次数

PeerJS 入门

我正在尝试最简单的例子,直接从他们的网站上提取。这是我的整个 html 文件,代码完全取自https://peerjs.com/index.html

<script src="https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js"></script>
<script>
    var peer = new Peer();
    var conn = peer.connect('another-peers-id');
    // on open will be launch when you successfully connect to PeerServer
    conn.on('open', function(){
    // here you have conn.id
        conn.send('hi!');
    });
</script>
Run Code Online (Sandbox Code Playgroud)

在 Chrome 和 Edge 中,我在控制台中得到了这个:

peerjs.min.js:64 GET https://0.peerjs.com/peerjs/id?ts=15956160926060.016464029424720694 net::ERR_CONNECTION_REFUSED
Run Code Online (Sandbox Code Playgroud)

在 Firefox 中,我得到了这个:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://0.peerjs.com/peerjs/id?ts=15956162489620.8436734374800061. (Reason: CORS request did not succeed).
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

@reyad 已请求“完整跟踪请求和响应”。这是我在 Firefox 的网络选项卡中看到的内容:Firefox 网络选项卡

这是 Chrome: Chrome 网络标签

还有一点点Chrome: 更多铬

peerjs

6
推荐指数
1
解决办法
2095
查看次数

Websocket 失败 无效的帧头

我正在使用 socket.io 和 peerjs 创建视频会议应用程序。在本地主机上一切正常。但是当我在heroku上推送/托管它时,它会在浏览器的控制台中显示这个错误:

index.js:83 WebSocket connection to 'wss://vidconsom.herokuapp.com/socket.io/?EIO=3&transport=websocket&sid=zbEGAHBj9w_dpcQfAAAF' failed: Invalid frame header.

有人可以帮忙吗?

更新:检查下面的答案

这是我的 server.js 代码:

const express = require("express");
const app = express();
const path = require("path");
// const { PeerServer } = require("peer");
const { ExpressPeerServer } = require("peer");
const { v4: uuidV4 } = require("uuid");

const server = require("http").Server(app);
const io = require("socket.io")(server);

const PORT = process.env.PORT || 3000;
const expServer = server.listen(PORT, () =>
  console.log(`Server started on port ${PORT}`)
);

const peerServer …
Run Code Online (Sandbox Code Playgroud)

sockets heroku websocket node.js peerjs

6
推荐指数
1
解决办法
1734
查看次数

webRTC:稍后添加音频或使用peerJS禁用麦克风

我目前正在编写一个应用程序,使用户能够使用peerJS 通过 webRTC 启动视频通话。现在我希望用户能够决定是否要添加音频,但无需重新启动通话。

正如我所见 - 根据这个答案- 无法使用浏览器控制麦克风。假设我在启用视频和音频的情况下开始通话,我可以将合作伙伴端的视频元素静音。我不想那样做。为什么?我想象有人可以使用浏览器的开发者控制台并取消视频元素的静音,从而在呼叫者不知情的情况下监视呼叫者。

因此,目前看来我必须重新呼叫合作伙伴并激活视频和音频,现在如果用户只想要视频,我将不得不再次重新呼叫。

我的问题:有更好的方法吗?另外,如果接听电话,是否有办法确定是纯视频通话还是视频和音频通话?

html javascript video-conferencing webrtc peerjs

5
推荐指数
2
解决办法
9897
查看次数

PeerJS - 手动关闭对等点之间的连接

我将PeerJS用于我的 P2P 应用程序(多人游戏)。一切都很好(对等点之间的连接,发送数据),但我不知道如何手动关闭对等点之间的连接

在文档中是“关闭与服务器的连接”或“关闭与服务器的连接并终止所有现有连接”的函数(peer.disconnect()peer.destroy()),但我只想“终止现有连接”,而不是“关闭与服务器的连接”服务器”。

我知道我可以处理数组中的连接,并仅为具有某种状态(例如“已连接”或“断开连接”)的对等方发送/接收数据,但其他对等方可以向我发送数据以进行过载(黑客> ddos​​ ...),所以基本上我希望有机会给予类似禁令之类的东西。

有什么想法吗(抱歉英语不好)?

解决了:

我一定是真的瞎了。有DataConnection.close()关闭对等点之间连接的功能。

http://peerjs.com/docs/#dataconnection-close

javascript p2p webrtc peerjs

5
推荐指数
1
解决办法
1万
查看次数

将 Peerjs 与本机 Android/iOS 客户端结合使用的 WebRTC

我们正在尝试构建一个内部系统,该系统将使用 WebRTC 为我们提供简单的聊天/视频功能。我们已经成功部署了 Peer.js 客户端和服务器,它们在浏览器上运行得很好。

然而,我们似乎找不到一个相当简单的 Android/iOS 客户端/SDK 来使其与我们的 PeerJS 服务器兼容。

我们尝试研究AppRTC并让 Android 客户端与他们的服务器一起运行,但是我们无法理解如何将其连接到我们的 PeerJS 服务器,因为 Android 客户端(和服务器实现)似乎非常复杂(我们不是 JAVA 专家) )。

我也研究过 EasyRTC,不过他们似乎已经撤回了原生 SDK,但技术堆栈看起来非常接近我们的。

我的问题是,有没有人有 Android/iOS 客户端与在 NodeJS 服务器上运行的 WebRTC 一起使用?有哪些可能的解决方法可以使其在 Android 上本地运行?

我们正在寻找一个相当简单的 Android SDK(链接到库/示例项目),它可以与 PeerJS 服务器一起使用。

编辑:我们可以自己构建一个信令服务器(在 NodeJS 上),但是从那时起我们如何构建 Android/iOS 客户端呢?

对于能回答我们问题的人,我悬赏 200 名代表。

android node.js ios webrtc peerjs

5
推荐指数
1
解决办法
1万
查看次数

peer.on('callll') 永远不会被调用

Peer js 不工作

我只是在 NodeJs 和 ReactJs 中创建peerjs 视频流应用程序


下面的代码工作正常,我能够创建新的对等点,并且open事件也正常工作。

const peer = new Peer(undefined,{
            host:"/",
            port:"5001"
        });

peer.on('open',id=>{
  socket.emit('join-room', roomId,id);
})
Run Code Online (Sandbox Code Playgroud)

在服务器端,每当'join-room'发出事件时,服务器都会发出另一个事件'user-disconnected'并传递userId (peerjs)给客户端。

// server.js
socket.on('join-room',(roomId,userId)=>{
    console.log(`user ${userId} joined ${roomId}`);
    socket.join(roomId);
    socket.to(roomId).emit('user-connected',userId);

    socket.on('disconnect', () => {
        socket.to(roomId).emit('user-disconnected', userId)
    })
})
Run Code Online (Sandbox Code Playgroud)

每当 'user-connected'在客户端触发时,我都会打电话connectToNewUser,到目前为止一切正常。

socket.on('user-connected',userId=>{
    console.log("New user connected...")
    connectToNewUser(userId, stream)
});
Run Code Online (Sandbox Code Playgroud)

错误

这是登录控制台console.log('connectToNewUser',1222.....)没有错误。

但是,这call.on('stream')从来没有被称为

connectToNewUser(userId, stream) {
    console.log('connectToNewUser',userId)
    const call = peer.call(userId, stream);
    const video = …
Run Code Online (Sandbox Code Playgroud)

node.js webrtc reactjs peerjs

5
推荐指数
1
解决办法
4570
查看次数

Next.js:错误:无法收集/的页面数据

我已添加peerjs到 Next.js 应用程序和以下两行,如下所示。如果我删除这两行,应用程序就可以工作。

// index.tsx

import { Peer } from 'peerjs'

export default function Home() {
    const peer = new Peer('pick-an-id-jwrn')
Run Code Online (Sandbox Code Playgroud)

yarn build提出这个错误,为什么?我已经成功安装包了。

    at Object.982 (/Users/kukodajanos/Workspace/serverless-chat/.next/server/pages/index.js:50:41)
    at __webpack_require__ (/Users/kukodajanos/Workspace/serverless-chat/.next/server/webpack-runtime.js:25:42)

> Build error occurred
Error: Failed to collect page data for /
    at /Users/kukodajanos/Workspace/serverless-chat/node_modules/next/dist/build/utils.js:949:15
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {
  type: 'Error'
}
Run Code Online (Sandbox Code Playgroud)

typescript reactjs peerjs next.js

5
推荐指数
0
解决办法
1万
查看次数