apricot-webrtc-client
v1.0.4
Published
webrtc 结合 websocket 进行封装,初始化传递 websocket地址(websocketAddress)、通道名(channelName)、选填自定义 `RTCPeerConnection`,然后调用开始运行 `startAsync` 方法,双方开始建立连接,双方连接成功即可通讯,用户可通过事件 `messageHandler` 进行自定义处理接收消息。
Readme
apricot-webrtc-client
webrtc 结合 websocket 进行封装,初始化传递 websocket地址(websocketAddress)、通道名(channelName)、选填自定义 RTCPeerConnection,然后调用开始运行 startAsync 方法,双方开始建立连接,双方连接成功即可通讯,用户可通过事件 messageHandler 进行自定义处理接收消息。
Commands
Install
npm install apricot-webrtc-clientUsage
- client
var peer = new WebRTCClient("ws://192.168.10.204:8810", "202501131731", () => { return new Promise((resolve, reject) => { resolve(new RTCPeerConnection ({ "iceServers": [ { "urls": ["stun:120.79.57.164:3478"], "username": "username", "credential": "password" }, { "urls": ["turn:120.79.57.164:3478"], "username": "username", "credential": "password" } ] })) }) }); // message handler peer.messageHandler = (channelName, event) => { console.log(`${channelName} messageHandler:`, event.data); }; // close handler peer.closeHandler = (channelName, event) => { console.log(`${channelName} closeHandler:`, event.data); } await peer.startAsync(); - server
var peer = new WebRTCServer("ws://192.168.10.204:8810", "202501131731", () => { return new Promise((resolve, reject) => { resolve(new RTCPeerConnection ({ "iceServers": [ { "urls": ["stun:120.79.57.164:3478"], "username": "username", "credential": "password" }, { "urls": ["turn:120.79.57.164:3478"], "username": "username", "credential": "password" } ] })) }) }); // message handler peer.messageHandler = (channelName, event) => { console.log(`${channelName} messageHandler:`, event.data); }; // close handler peer.closeHandler = (channelName, event) => { console.log(`${channelName} closeHandler:`, event.data); } await peer.startAsync();
// rtc client
var client = new WebRTCClient("ws://192.168.20.75:8810", "202407191016");
// 自定义消息处理
client.messageHandler = (event) => {
console.log("messageHandler:", event.data);
};
// 开始运行
await client.startAsync();Sample
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>file-system</title>
</head>
<script src="index.js"></script>
<body>
<input name="content" />
<input type="button" onclick="client()" value="client" />
<input type="button" onclick="server()" value="server" />
<input type="button" onclick="send()" value="send" />
<div>
<p name="data"></p>
</div>
</body>
</html>
<script>
// rtc client
let peer;
let parts = {};
// 初始化客户端
async function client() {
peer = new WebRTCClient("ws://192.168.10.204:8810", "202501131731", () => {
return new Promise((resolve, reject) => {
resolve(new RTCPeerConnection
({
"iceServers": [
{
"urls": ["stun:120.79.57.164:3478"],
"username": "username",
"credential": "password"
},
{
"urls": ["turn:120.79.57.164:3478"],
"username": "username",
"credential": "password"
}
]
}))
})
});
// message handler
peer.messageHandler = (channelName, event) => {
console.log(`${channelName} messageHandler:`, event.data);
};
// close handler
peer.closeHandler = (channelName, event) => {
console.log(`${channelName} closeHandler:`, event.data);
}
await peer.startAsync();
}
// 初始化客户端
async function server() {
peer = new WebRTCServer("ws://192.168.10.204:8810", "202501131731", () => {
return new Promise((resolve, reject) => {
resolve(new RTCPeerConnection
({
"iceServers": [
{
"urls": ["stun:120.79.57.164:3478"],
"username": "username",
"credential": "password"
},
{
"urls": ["turn:120.79.57.164:3478"],
"username": "username",
"credential": "password"
}
]
}))
})
});
// message handler
peer.messageHandler = (channelName, event) => {
console.log(`${channelName} messageHandler:`, event.data);
};
// close handler
peer.closeHandler = (channelName, event) => {
console.log(`${channelName} closeHandler:`, event.data);
}
await peer.startAsync();
}
// 发送数据
function send() {
var content = document.getElementsByName("data");
content[0].innerText = "";
var content = document.getElementsByName("content")[0].value;
if (content == "1") {
content = JSON.stringify(
{
command: 2,
data: 1235565,
});
}
else if (content == "2") {
content = JSON.stringify({
command: 3,
data: 1235565,
});
}
peer.send(content);
}
</script>