fetch('http://example.com/something.json').then(function(response) {
return response.json();
}).then(function(data) {
console.log(data);
});
Here is a quick AJAX example which loads content from a text file on a server (repeatedly)
var websocket = new WebSocket("ws://echo.websocket.org"); // this server no longer exists
// Callbacks
websocket.onopen = function(evt) { alert("onopen " + evt) };
websocket.onclose = function(evt) { alert("onclose " + evt) };
websocket.onmessage = function(evt) { alert("onmessage " + evt.data) };
websocket.onerror = function(evt) { alert("onerror " + evt) };
// Sending
websocket.send("hi");
JavaScript (ECMAScript) engine for building server side apps
http://nodejs.org/
Uses V8
Event/Callback driven - A callback function is registered for a specific event. When that event occurs the callback method is run.
In order to run node servers that are accessible to others via the internet, we'll need somewhere to host it. At the moment, the easiest way to run a Node.js server is to use a company such as Digital Ocean which provides Virtual Private Servers. Digital Ocean has a few things going for them, first is the cost, second is the fact that you can get one running with Node.js already installed very quickly.
In order to get started, you'll need to create an account with Digital Ocean.
After that, you can go ahead and create a "droplet". A "droplet" is Digital Ocean's term for a VPS. After coming up with a hostname, I would choose the smallest size, an appropriate region (one close to you, perhaps), choose a "root" password and click "Create" at the bottom.
Take note of the IP Address of your new server, you'll need to use that quite a bit.
Next you'll want to log into the server via the command line via SSH. To do so, open up Terminal on your Mac (or use PuTTY if you are on a PC). To connect on from the Terminal app on the Mac, you type the following:
ssh root@ip_address
You'll need to go through the following steps to install node:
apt-get update
apt-get install nodejs
apt-get install npm
Once you have done that, we can move on although it is probably a good idea to keep the terminal open as we'll be using it again shortly.
In order to upload to your server, we need to use a tool that will allow us to connect via SSH to transfer the files. I have found that Fetch and Cyberduck are good tools.
To connect, choose "SFTP", under "Hostname" or "Server" use the IP address for your droplet Digital Ocean. The "username" is "root" and the "password" is what you just created in Terminal.
// Express is a node module for building HTTP servers
var express = require('express');
var app = express();
// Tell Express to look in the "public" folder for any files first
app.use(express.static('public'));
// If the user just goes to the "route" / then run this function
app.get('/', function (req, res) {
res.send('Hello World!')
});
// Here is the actual HTTP server
var http = require('http');
// We pass in the Express object
var httpServer = http.createServer(app);
// Listen on port 80, the default for HTTP
httpServer.listen(80);
// WebSocket Portion
// WebSockets work with the HTTP server
// Using Socket.io
const { Server } = require('socket.io');
const io = new Server(httpServer, {});
// Old version of Socket.io
//var io = require('socket.io').listen(httpServer);
// Register a callback function to run when we have an individual connection
// This is run for each individual user that connects
io.sockets.on('connection',
// We are given a websocket object in our function
function (socket) {
console.log("We have a new client: " + socket.id);
// When this user emits, client side: socket.emit('otherevent',some data);
socket.on('chatmessage', function(data) {
// Data comes in as whatever was sent, including objects
console.log("Received: 'chatmessage' " + data);
// Send it to all of the clients
socket.broadcast.emit('chatmessage', data);
});
socket.on('disconnect', function() {
console.log("Client has disconnected " + socket.id);
});
}
);
<html>
<head>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect();
socket.on('connect', function() {
console.log("Connected");
});
// Receive from any event
socket.on('chatmessage', function (data) {
console.log(data);
document.getElementById('messages').innerHTML = "" + data +
+ "" + document.getElementById('messages').innerHTML;
});
var sendmessage = function(message) {
console.log("chatmessage: " + message);
socket.emit('chatmessage', message);
};
</script>
</head>
<body>
<div id="messages">
No Messages Yet
</div>
<input type="text" id="message" name="message">
<input type="submit" value="submit" onclick="sendmessage(document.getElementById('message').value);">
</body>
</html>
To run, upload these files to a new folder on your your server (using Cyberduck or Fetch)
Next, you'll have to install the socket.io module via terminal
Finally you can run the server via node.
ssh root@YOUR_IP
cd directory_you_just_created
npm install socket.io
node server.js