osc-js เป็นไลบรารี Open Sound Control สำหรับแอปพลิเคชัน JavaScript (โมดูล UMD สำหรับโหนด เบราว์เซอร์ ฯลฯ) พร้อมการจับคู่รูปแบบที่อยู่และการจัดการป้ายเวลา ส่งข้อความผ่าน UDP , WebSocket หรือทั้งสองอย่าง (โหมดบริดจ์) และเสนอ Plugin 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 (รวมถึงการจัดการข้อความ ฯลฯ ) อ่านเอกสารประกอบ Plugin 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 ไบนารี ดูตัวอย่างด้านล่างสำหรับการใช้ Low-Level 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