osc-js — это библиотека Open Sound Control для приложений JavaScript (модуль UMD для узла, браузера и т. д.) с сопоставлением шаблонов адресов и обработкой временных меток. Отправляет сообщения через UDP , WebSocket или оба (режим моста) и предлагает настраиваемый API-интерфейс плагина для сетевых протоколов.
Вики | Основное использование | Документация | API плагина
ws
в Node.js или аналогичных средах)Узнайте больше о osc-js и о том, как его использовать, в Wiki и документации.
const osc = new OSC ( )
osc . on ( '/param/density' , ( message , rinfo ) => {
console . log ( message . args )
console . log ( rinfo )
} )
osc . on ( '*' , message => {
console . log ( message . args )
} )
osc . on ( '/{foo,bar}/*/param' , message => {
console . log ( message . args )
} )
osc . on ( 'open' , ( ) => {
const message = new OSC . Message ( '/test' , 12.221 , 'hello' )
osc . send ( message )
} )
osc . open ( { port : 9000 } )
Рекомендуемая установка через npm: npm i osc-js
или yarn add osc-js
.
Импортируйте библиотеку const OSC = require('osc-js')
или добавьте скрипт lib/osc.js
или lib/osc.min.js
(мини-версия) для использования в браузере.
osc-js предлагает архитектуру плагинов для расширения сетевых возможностей. Библиотека поставляется с четырьмя встроенными плагинами. Вероятно, это все, что вам нужно для приложения OSC:
WebsocketClientPlugin
(по умолчанию)WebsocketServerPlugin
DatagramPlugin
для обмена сетевыми сообщениями UDPBridgePlugin
Мост между клиентами WebSocket и UDPКонфигурацию и примеры каждого плагина можно прочитать здесь: Wiki.
Зарегистрируйте плагин при создании экземпляра OSC:
const osc = new OSC ( { plugin : new OSC . WebsocketServerPlugin ( ) } )
osc . open ( ) // listening on 'ws://localhost:8080'
< button id =" send " > Send Message </ button >
< script type =" text/javascript " src =" lib/osc.min.js " > </ script >
< script type =" text/javascript " >
var osc = new OSC ( ) ;
osc . open ( ) ; // connect by default to ws://localhost:8080
document . getElementById ( 'send' ) . addEventListener ( 'click' , ( ) => {
var message = new OSC . Message ( '/test/random' , Math . random ( ) ) ;
osc . send ( message ) ;
} ) ;
</ script >
const OSC = require ( 'osc-js' )
const config = { udpClient : { port : 9129 } }
const osc = new OSC ( { plugin : new OSC . BridgePlugin ( config ) } )
osc . open ( ) // start a WebSocket server on port 8080
[udpreceive 9129] // incoming '/test/random' messages with random number
Можно написать более сложные решения для приложений OSC, не теряя при этом интерфейса osc-js (включая обработку сообщений и т. д.). Прочтите документацию по API плагинов для получения дополнительной информации.
class MyCustomPlugin {
// ... read docs for implementation details
}
const osc = new OSC ( { plugin : MyCustomPlugin ( ) } )
osc . open ( )
osc . on ( '/test' , message => {
// use event listener with your plugin
} )
Библиотеку можно использовать без упомянутых функций, если вам необходимо записывать и читать двоичные данные OSC. См. этот пример ниже для использования низкоуровневого API (хотя в библиотеке уже есть решение для обработки UDP, как в этом примере):
const dgram = require ( 'dgram' )
const OSC = require ( 'osc-js' )
const socket = dgram . createSocket ( 'udp4' )
// send a messsage via udp
const message = new OSC . Message ( '/some/path' , 21 )
const binary = message . pack ( )
socket . send ( new Buffer ( binary ) , 0 , binary . byteLength , 41234 , 'localhost' )
// receive a message via UDP
socket . on ( 'message' , data => {
const msg = new OSC . Message ( )
msg . unpack ( data )
console . log ( msg . args )
} )
osc-js использует Babel для поддержки ES6, ESDoc для документации, Mocha + Chai для тестирования и Rollup для создания модуля UMD.
Клонируйте репозиторий и установите все зависимости:
git clone [email protected]:adzialocha/osc-js.git
cd osc-js
npm install
npm run test
для запуска тестов. npm run test:watch
за выполнением спецификаций во время разработки. Проверьте стиль кода с помощью npm run lint
.
npm run build
для экспорта модуля UMD в папку lib
.
npm run docs
для создания папки docs
с HTML-файлами, документирующими библиотеку. Прочтите их онлайн здесь: https://adzialocha.github.io/osc-js.
Лицензия MIT MIT