EdgeMatrix JS Monorepo
This is project reference ethereumjs-monorepo
Packages
package
npm
keywords
utility
create private key
rlp encode
keccak256 sign
websocket
http
create subject
scribe subject
send message
edgematrixjs for browser
Basic Usage
CommonJS and ESmodules
npm install --save @edgematrixjs/rtc
Create Subject
import { Http } from '@edgematrixjs/http';
import { RTC } from '@edgematrixjs/rtc';
const chatId = 2;
const privateKey = '';
const httpsUrl = 'https://oregon.edgematrix.xyz';
const emHttp = new Http({ baseURL: httpsUrl });
const rtc = new RTC();
const { _result, hash } = await rtc.createSubject(chainId, privateKey, emHttp);
//_result === 0 is success, the 'hash' is subject
Subscribe Subject
import { EmSocket } from '@edgematrixjs/socket';
import { RTC } from '@edgematrixjs/rtc';
//connect method implement follow in test/index.spec.ts
const wssUrl = 'wss://oregon.edgematrix.xyz/edge_ws';
const handleAction = ({ action, event }) => {};
const { _result: _socketResult, emSocket, event } = await connect({ network: wssUrl, callback: handleAction });
if (_socketResult !== 0) {
throw new Error('socket is error');
}
const rtc = new RTC();
const chatId = 2;
const application = 'edge_chat';
const subject = 'Your Subject';
const content = 'Your Content';
const params = { subject, application, content, chainId };
const { _result } = await rtc.subscribe(params, privateKey, emSocket);
//_result === 0 is success
Send Message
import { Http } from '@edgematrixjs/http';
import { RTC } from '@edgematrixjs/rtc';
const httpsUrl = 'https://oregon.edgematrix.xyz';
const emHttp = new Http({ baseURL: httpsUrl });
const rtc = new RTC();
const params = {
subject: globalSubject,
application: 'edge_chat',
content: JSON.stringify({ data: 'test send message' }),
//When the "To" parameter is empty, everyone who subscribed to the subject will receive your message
//to?: {TargetPublicKey},
chainId,
};
const { _result } = await rtc.sendMessage(params, privateKey, emHttp);
//_result === 0 is success
Browser
<script src="packages/client/dist/bundle.js"></script>
<script>
const privateKey = '0xb22be9c19b61adc1d8e89a1dae0346ed274ac9fa239c06286910c29f9fee59d3';
const subject = '0x8eeb338239ada22d81ffb7adc995fe31a4d1dc2d701bc8a58fffe5b53e14281e';
const httpsUrl = 'https://oregon.edgematrix.xyz';
const wssUrl = 'wss://oregon.edgematrix.xyz/edge_ws';
window.onload = function () {
const Http = edgematrixjs.Http;
const RTC = edgematrixjs.RTC;
const ws = new edgematrixjs.EmSocket({ url: wssUrl });
//set open listener
ws.setOpenListener((event) => {
const rtc = new RTC();
const subscribe = { subject: subject, application: 'edge_chat', content: 'subject', chainId: 2 };
rtc.subscribe(subscribe, privateKey, ws).then((resp) => {
//send message
const http = new Http({ baseURL: httpsUrl });
const messageContent = { data: 'hello' };
const message = {
subject: subject,
application: 'edge_chat',
chainId: 2,
content: JSON.stringify(messageContent),
};
rtc.sendMessage(message, privateKey, http);
});
});
//set message listener
ws.addMessageListener((event) => {
const data = JSON.parse(event.data) || {};
const params = data.params || {};
const result = params.result || {};
const from = result.From;
const type = result.Type;
let content = { data: '' };
try {
content = JSON.parse(result.Content);
} catch (e) {}
console.info(`recerved message `, content);
});
//connect socket
ws.connect();
};
</script>
Last updated