рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ PeerJS рдХреЛ реж.реи.резреж рд╕реЗ реж.рей.реи рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдЗрд╕рдиреЗ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреА рд╣реИ рдХрд┐ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ README рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?
рдпрд╣рд╛рдБ рд╕рдВрд╕реНрдХрд░рдг 0.2.10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ README рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:
https://glitch.com/~unruly-chinchilla
рдпрд╣ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдпрд╣рд╛рдБ рдПрдХрдорд╛рддреНрд░ рд╕рдЯреАрдХ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ PeerJS рд╕рдВрд╕реНрдХрд░рдг рдХреЛ 0.3.2 рдкрд░ рдЯрдХреНрдХрд░ рджреА рд╣реИ:
https://glitch.com/~abyssinian-piper
рдпрд╣ рдЗрд╕ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдореЗрдВ 404 рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ:
https://abyssinian-piper.glitch.me/peerjs/peerjs/id
рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рдмрд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (0.3.2) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдпреЗ? рдзрдиреНрдпрд╡рд╛рдж!
рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧреА рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд: рдореИрдВрдиреЗ README рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдкреЛ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдФрд░ рджреЗрдЦрд╛ рдХрд┐ рдЯреНрд░реИрд╡рд┐рд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреБрдЦреА рдерд╛:
https://travis-ci.org/github/peers/peerjs-server/builds/664198688
рдХреНрдпрд╛ рдЖрдк рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╕рд╛рднрд╛рд░ @afrokick рдЖрдк рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ (рдФрд░ рдмрд╛рдХреА рдХреЛрдб) рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
https://glitch.com/edit/#//rruly -chinchilla? path = server.js: 2: 0
рдЖрдк рдпрд╣рд╛рдВ рдХрд╛рдо рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ (рдФрд░ рдмрд╛рдХреА рдХреЛрдб) рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
https://glitch.com/edit/#//abyssinian -piper; рдкрде = server.js: 1: 0
рдХреНрдпрд╛ рд╡рд╣ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ?
@georgemandis рдзрдиреНрдпрд╡рд╛рдж! рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереАред
рддреЛ, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд░рд╛рд╕реНрддрд╛ https://abyssinian-piper.glitch.me/peerjs/peerjs/peerjs/id
(рдЕрддрд┐рд░рд┐рдХреНрдд рдкреАрд░рдЬреЗрдЬрд╝ :) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)
рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ!
const express = require('express');
const app = express();
const { ExpressPeerServer } = require('peer');
//app.get('/', (req, res, next) => { res.send('Hello world!'); });
// =======
const server = app.listen(process.env.PORT);
const options = {
debug: true,
path: '/xyz'
}
const peerserver = ExpressPeerServer(server, options);
app.use('/', peerserver);
app.use("/", express.static("public"));
рдкрд░рд┐рдгрд╛рдо http://domain.name/xyz
- рдпрд╣ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ secret
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд┐рдо url http://domain.name/xyz/secret/id
id
API рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рдПрдХ рдЕрдВрддрд┐рдо рдХреЛрдб рд╣реИ:
const express = require('express');
const app = express();
const { ExpressPeerServer } = require('peer');
//app.get('/', (req, res, next) => { res.send('Hello world!'); });
// =======
const server = app.listen(process.env.PORT);
const options = {
debug: true,
path: '/peerjs' // <-- changed
}
const peerserver = ExpressPeerServer(server, options);
app.use('/', peerserver); // <-- changed
app.use("/", express.static("public"));
рдЖрдкрдХреА рддреНрд╡рд░рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @afrokick рдореИрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ?
рдЖрдк рдпрд╣рд╛рдБ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЕрдВрддрд░ 404 рддреНрд░реБрдЯрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
https://abyssinian-piper.glitch.me/
рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ URL рдХреЛ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реИ:
https://abyssinian-piper.glitch.me/peerjs/id
рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ path
рд╡рд┐рдХрд▓реНрдк рд╣реИред рдореИрдВ /peerjs
рдореЗрдВ рд╕рд╣рдХрд░реНрдореА рдХреЛ рдмрдврд╝рд╛ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕реЗрдЯрдЕрдк рдХреИрд╕реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░ рджреЗрдВ?
рдпрд╣рд╛рдБ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
https://glitch.com/edit/#//abyssinian -piper; рдкрде = server.js: 1: 0
рдФрд░ рдпрд╣рд╛рдБ рдореЗрд░реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИ:
https://glitch.com/edit/# ! html: 8 : 8
рдореБрдЭреЗ рдпрд╣ рднреА рдПрд╣рд╕рд╛рд╕ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЧрд▓рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкреЛрд╕реНрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ! рдЙрд╕рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореИрдВ рдпрд╣рд╛рдБ peerjs-server
рд▓рд┐рдП README рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рдерд╛: https://github.com/peers/peerjs-server
рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдЙрджрд╛рд╣рд░рдг
const peerServer = ExpressPeerServer(server, {
debug: true,
path: '/myapp'
});
app.use('/peerjs', peerServer);
рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
const peerServer = PeerServer({
port: 9000,
path: '/myapp',
generateClientId: customGenerationFunction
});
рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рдЬреИрд╕реЗ рдЖрдкрдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдБ рджрд┐рдЦрд╛рдпрд╛, рд╡реИрд╕реЗ рд╣реА "/" рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдпрд╣ рдореБрдЭреЗ 404 рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?
рдЖрдкрдХрд╛ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рдЧрд▓рдд рд╣реИ! @georgemandis
const peer = new Peer({
host: location.hostname,
port: location.port,
path: "/peerjs" // <- change to this value
});
@georgemandis рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдорд┐рд▓реАред рдореИрдВрдиреЗ PeerServer рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди ExpressPeerServer рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдмрд╕ рдЕрдм рдЖрдк app.use('/', peerserver); // <-- changed
рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкрде рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдЗрд╢реНрдпреВ, 0.5.1 рдореЗрдВ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛
рддрдп рдХрд┐рдпрд╛ рд╣реБрдЖред рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг 0.5.1 https://prairie-six-ray.glitch.me рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
@georgemandis рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЗрд╕ рд╕рдм рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @afrokick ! рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрдбрд╝реЗ рдкреНрд░рд╢рдВрд╕рдХ рдФрд░ рдЖрдкрдХреЛ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрдХрд░ рдЦреБрд╢реА рд╣реБрдИред : -рдбреЙ
рд╕рд╛рдЗрдб рд╕рд╡рд╛рд▓: рдПрдкреАрдЖрдИ рдбреЙрдХреНрд╕ (https://peerjs.com/docs.html#api) рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╣реАрдВ рд░реЗрдкреЛ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк await/async
рдФрд░ рд╢рд╛рдпрдж рдЕрдиреНрдп ES6 + рдЕрдиреБрдХреВрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ / рдпрд╛ рд╢рд╛рдпрдж рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдХрд░реЗрдВрдЧреЗ?
@georgemandis рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рд░реЗрдкреЛ рдкреА 2 рдкреА рдХреЗ рд╕рд╛рде рдЪреИрдЯ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ https://github.com/afrokick/peerjs-examples
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рд╛рднрд╛рд░ @afrokick рдЖрдк рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ (рдФрд░ рдмрд╛рдХреА рдХреЛрдб) рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
https://glitch.com/edit/#//rruly -chinchilla? path = server.js: 2: 0
рдЖрдк рдпрд╣рд╛рдВ рдХрд╛рдо рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд┐рдЧ (рдФрд░ рдмрд╛рдХреА рдХреЛрдб) рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:
https://glitch.com/edit/#//abyssinian -piper; рдкрде = server.js: 1: 0
рдХреНрдпрд╛ рд╡рд╣ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ?