This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ws.addEventListener('message', event => { | |
// The `event` object is a typical DOM event object, and the message data sent | |
// by the server is stored in the `data` property | |
console.log('Received:', event.data); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ws = new WebSocket('ws://localhost:3210', ['json', 'xml']); | |
ws.addEventListener('open', () => { | |
const data = { message: 'Hello from the client!' } | |
const json = JSON.stringify(data); | |
ws.send(json); | |
}); | |
ws.addEventListener('message', event => { | |
const data = JSON.parse(event.data); | |
console.log(data); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
socket.on('data', buffer => { | |
const message = parseMessage(buffer); | |
if (message) { | |
// For our convenience, so we can see what the client sent | |
console.log(message); | |
// We'll just send a hardcoded message in this example | |
socket.write(constructReply({ message: 'Hello from the server!' })); | |
} else if (message === null) { | |
console.log('WebSocket connection closed by the client.'); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let maskingKey; | |
if (isMasked) { | |
maskingKey = buffer.readUInt32BE(currentOffset); | |
currentOffset += 4; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
socket.on('data', buffer => { | |
const message = parseMessage(buffer); | |
if (message) { | |
// For our convenience, so we can see what the client sent | |
console.log(message); | |
// We'll just send a hardcoded message in this example | |
socket.write(constructReply({ message: 'Hello from the server!' })); | |
} else if (message === null) { | |
console.log('WebSocket connection closed by the client.'); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
curl -X POST https://rest.ably.io/channels/fox-gin/messages \ | |
-u '6QdTiA.O9vBCw:8glD3fRTNhSEVJC5' \ | |
--data 'name=greeting&data=hello' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
if(! (gem list -i iStats)) | |
then | |
gem install iStats | |
exit 0 | |
fi | |
myDeviceTemp=$(istats | awk '{if($1=="CPU") { print "CPUtemp:" $3 }; } END { }') | |
myBatteryTemp=$(istats | awk '{if($1=="Battery") { print "BatteryTemp:" $3 }; } END { }') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function constructReply (data) { | |
// Convert the data to JSON and copy it into a buffer | |
const json = JSON.stringify(data) | |
const jsonByteLength = Buffer.byteLength(json); | |
// Note: we're not supporting > 65535 byte payloads at this stage | |
const lengthByteCount = jsonByteLength < 126 ? 0 : 2; | |
const payloadLength = lengthByteCount === 0 ? jsonByteLength : 126; | |
const buffer = Buffer.alloc(2 + lengthByteCount + jsonByteLength); | |
// Write out the first byte, using opcode `1` to indicate that the message | |
// payload contains text data |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function parseMessage (buffer) { | |
const firstByte = buffer.readUInt8(0); | |
const isFinalFrame = Boolean((firstByte >>> 7) & 0×1); | |
const [reserved1, reserved2, reserved3] = [ Boolean((firstByte >>> 6) & 0×1), Boolean((firstByte >>> 5) & 0×1), Boolean((firstByte >>> 4) & 0×1) ]; | |
const opCode = firstByte & 0xF; | |
// We can return null to signify that this is a connection termination frame | |
if (opCode === 0×8) | |
return null; | |
// We only care about text frames from this point onward | |
if (opCode !== 0×1) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[{ | |
id: <string>, | |
clientId: <optional, string> | |
platform: <string> | |
formFactor: <string>, | |
metadata: <object>, | |
updateToken: <string>, | |
push: { | |
recipient: { | |
transportType: <string>, |