Simulator first commit
This commit is contained in:
9
node_modules/protobufjs/examples/websocket/README.md
generated
vendored
Normal file
9
node_modules/protobufjs/examples/websocket/README.md
generated
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
ProtoBuf.js WebSocket example
|
||||
=============================
|
||||
This example shows how to use binary websockets to transfer protocol buffers.
|
||||
|
||||
Instructions
|
||||
------------
|
||||
1. Set up dependencies: `npm install`
|
||||
2. Run: `node server.js`
|
||||
3. Open [http://localhost:8080/](http://localhost:8080/) in a recent browser
|
16
node_modules/protobufjs/examples/websocket/package.json
generated
vendored
Normal file
16
node_modules/protobufjs/examples/websocket/package.json
generated
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "protobufjs-websocket-example",
|
||||
"version": "1.1.0",
|
||||
"dependencies": {
|
||||
"protobufjs": "~3",
|
||||
"ws": "~0.4",
|
||||
"open": "0.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8"
|
||||
},
|
||||
"scripts": {
|
||||
"run": "node server.js"
|
||||
},
|
||||
"private": true
|
||||
}
|
97
node_modules/protobufjs/examples/websocket/server.js
generated
vendored
Normal file
97
node_modules/protobufjs/examples/websocket/server.js
generated
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
// Set up: npm install
|
||||
var http = require("http"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
ws = require("ws"),
|
||||
open = require("open"),
|
||||
ProtoBuf = require("protobufjs");
|
||||
|
||||
// Copy dependencies to "www/" (example specific, you usually don't have to care
|
||||
var deps = [
|
||||
["Long.min.js", "./node_modules/long/dist/Long.min.js"],
|
||||
["ByteBufferAB.min.js", "./node_modules/bytebuffer/dist/ByteBufferAB.min.js"],
|
||||
["ProtoBuf.min.js", "./node_modules/protobufjs/dist/ProtoBuf.min.js"]
|
||||
];
|
||||
for (var i=0, dep, data; i<deps.length; i++) {
|
||||
dep = deps[i];
|
||||
if (!fs.existsSync(path.join(__dirname, "www", dep[0]))) {
|
||||
console.log("Copying "+dep[0]+" from "+dep[1]);
|
||||
try {
|
||||
fs.writeFileSync(path.join(__dirname, "www", dep[0]), fs.readFileSync(path.join(__dirname, dep[1])));
|
||||
} catch (err) {
|
||||
console.log("Copying failed: "+err.message);
|
||||
console.log("\nDid you run `npm install` ?");
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize from .proto file
|
||||
var builder = ProtoBuf.loadProtoFile(path.join(__dirname, "www", "example.proto")),
|
||||
Message = builder.build("Message");
|
||||
|
||||
// HTTP server
|
||||
var server = http.createServer(function(req, res) {
|
||||
var file = null,
|
||||
type = "text/html";
|
||||
if (req.url == "/") {
|
||||
file = "index.html";
|
||||
} else if (/^\/(\w+(?:\.min)?\.(?:js|html|proto))$/.test(req.url)) {
|
||||
file = req.url.substring(1);
|
||||
if (/\.js$/.test(file)) {
|
||||
type = "text/javascript";
|
||||
}
|
||||
}
|
||||
if (file) {
|
||||
fs.readFile(path.join(__dirname, "www", file), function(err, data) {
|
||||
if (err) {
|
||||
res.writeHead(500, {"Content-Type": type});
|
||||
res.end("Internal Server Error: "+err);
|
||||
} else {
|
||||
res.writeHead(200, {"Content-Type": type});
|
||||
res.write(data);
|
||||
res.end();
|
||||
console.log("Served www/"+file);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
res.writeHead(404, {"Content-Type": "text/html"});
|
||||
res.end("Not Found");
|
||||
}
|
||||
});
|
||||
server.listen(8080);
|
||||
server.on("listening", function() {
|
||||
console.log("Server started");
|
||||
open("http://localhost:8080/");
|
||||
});
|
||||
server.on("error", function(err) {
|
||||
console.log("Failed to start server:", err);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
// WebSocket adapter
|
||||
var wss = new ws.Server({server: server});
|
||||
wss.on("connection", function(socket) {
|
||||
console.log("New WebSocket connection");
|
||||
socket.on("close", function() {
|
||||
console.log("WebSocket disconnected");
|
||||
});
|
||||
socket.on("message", function(data, flags) {
|
||||
if (flags.binary) {
|
||||
try {
|
||||
// Decode the Message
|
||||
var msg = Message.decode(data);
|
||||
console.log("Received: "+msg.text);
|
||||
// Transform the text to upper case
|
||||
msg.text = msg.text.toUpperCase();
|
||||
// Re-encode it and send it back
|
||||
socket.send(msg.toBuffer());
|
||||
console.log("Sent: "+msg.text);
|
||||
} catch (err) {
|
||||
console.log("Processing failed:", err);
|
||||
}
|
||||
} else {
|
||||
console.log("Not binary data");
|
||||
}
|
||||
});
|
||||
});
|
3
node_modules/protobufjs/examples/websocket/www/example.proto
generated
vendored
Normal file
3
node_modules/protobufjs/examples/websocket/www/example.proto
generated
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
message Message {
|
||||
required string text = 1;
|
||||
}
|
59
node_modules/protobufjs/examples/websocket/www/index.html
generated
vendored
Normal file
59
node_modules/protobufjs/examples/websocket/www/index.html
generated
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head> <!-- Please copy the following files into here: -->
|
||||
<script src="./Long.min.js"></script> <!-- https://raw.github.com/dcodeIO/Long.js/master/dist/Long.min.js -->
|
||||
<script src="./ByteBufferAB.min.js"></script> <!-- https://raw.github.com/dcodeIO/ByteBuffer.js/master/dist/ByteBufferAB.min.js -->
|
||||
<script src="./ProtoBuf.min.js"></script> <!-- https://raw.github.com/dcodeIO/ProtoBuf.js/master/dist/ProtoBuf.min.js -->
|
||||
<script>
|
||||
if (typeof dcodeIO === 'undefined' || !dcodeIO.ProtoBuf) {
|
||||
throw(new Error("ProtoBuf.js is not present. Please see www/index.html for manual setup instructions."));
|
||||
}
|
||||
// Initialize ProtoBuf.js
|
||||
var ProtoBuf = dcodeIO.ProtoBuf;
|
||||
var Message = ProtoBuf.loadProtoFile("./example.proto").build("Message");
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<textarea id="log" style="width: 100%; height: 200px"></textarea><br />
|
||||
<input type="text" id="text" value="hello world!" /> <button onclick="send()">Send</button>
|
||||
|
||||
<script>
|
||||
var log = document.getElementById("log");
|
||||
var text = document.getElementById("text");
|
||||
|
||||
// Connect to our server: node server.js
|
||||
var socket = new WebSocket("ws://localhost:8080/ws");
|
||||
socket.binaryType = "arraybuffer"; // We are talking binary
|
||||
|
||||
function send() {
|
||||
if (socket.readyState == WebSocket.OPEN) {
|
||||
var msg = new Message(text.value);
|
||||
socket.send(msg.toArrayBuffer());
|
||||
log.value += "Sent: "+msg.text+"\n";
|
||||
} else {
|
||||
log.value += "Not connected\n";
|
||||
}
|
||||
}
|
||||
|
||||
socket.onopen = function() {
|
||||
log.value += "Connected\n";
|
||||
};
|
||||
|
||||
socket.onclose = function() {
|
||||
log.value += "Disconnected\n";
|
||||
};
|
||||
|
||||
socket.onmessage = function(evt) {
|
||||
try {
|
||||
// Decode the Message
|
||||
var msg = Message.decode(evt.data);
|
||||
log.value += "Received: "+msg.text+"\n";
|
||||
} catch (err) {
|
||||
log.value += "Error: "+err+"\n";
|
||||
}
|
||||
};
|
||||
|
||||
log.value = ""; // Clear log on reload
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user