
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Want see it in action? The project website, sipjs.com, has a live demo.
Looking for code to get started with? This repository includes demonstrations which run in a web browser.
To place a SIP call, either utilize the SimpleUser
class...
import { Web } from "sip.js";
// Helper function to get an HTML audio element
function getAudioElement(id: string): HTMLAudioElement {
const el = document.getElementById(id);
if (!(el instanceof HTMLAudioElement)) {
throw new Error(`Element "${id}" not found or not an audio element.`);
}
return el;
}
// Options for SimpleUser
const options: Web.SimpleUserOptions = {
aor: "sip:alice@example.com", // caller
media: {
constraints: { audio: true, video: false }, // audio only call
remote: { audio: getAudioElement("remoteAudio") } // play remote audio
}
};
// WebSocket server to connect with
const server = "wss://sip.example.com";
// Construct a SimpleUser instance
const simpleUser = new Web.SimpleUser(server, options);
// Connect to server and place call
simpleUser.connect()
.then(() => simpleUser.call("sip:bob@example.com"))
.catch((error: Error) => {
// Call failed
});
Or, alternatively, use the full API framework...
import { Inviter, SessionState, UserAgent } from "sip.js";
// Create user agent instance (caller)
const userAgent = new UserAgent({
uri: UserAgent.makeURI("sip:alice@example.com"),
transportOptions: {
server: "wss://sip.example.com"
},
});
// Connect the user agent
userAgent.start().then(() => {
// Set target destination (callee)
const target = UserAgent.makeURI("sip:bob@example.com");
if (!target) {
throw new Error("Failed to create target URI.");
}
// Create a user agent client to establish a session
const inviter = new Inviter(userAgent, target, {
sessionDescriptionHandlerOptions: {
constraints: { audio: true, video: false }
}
});
// Handle outgoing session state changes
inviter.stateChange.addListener((newState) => {
switch (newState) {
case SessionState.Establishing:
// Session is establishing
break;
case SessionState.Established:
// Session has been established
break;
case SessionState.Terminated:
// Session has terminated
break;
default:
break;
}
});
// Send initial INVITE request
inviter.invite()
.then(() => {
// INVITE sent
})
.catch((error: Error) => {
// INVITE did not send
});
});
Node module
npm install sip.js
UMD bundle
Clone this repository, then...
npm install
npm run build-and-test
For more info please see the Documentation.
FAQs
A SIP library for JavaScript
The npm package sip.js receives a total of 11,009 weekly downloads. As such, sip.js popularity was classified as popular.
We found that sip.js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.