nodeコマンドで作成したスクリプトを実行して下さい。
例)% node app.js
var http = require('http');
var port = 3000;
var server = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello, world!\n');
});
server.listen(port);
console.log('Server running *:' + port);
% node httpd.js Server running *:3000
socket.ioなどのパッケージをインストールできます。
% mkdir nodejs % cd nodejs
% npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sane defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
name: (node2)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /home/22/ex1200/node2/package.json:
{
"name": "node2",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this ok? (yes)npm installでインストールできます。
% npm install パッケージ名
インストールされておりませんのでnpmコマンドを使ってインストールして下さい。
npm installコマンドを使用してインストールすることが出来ます。
% cd nodejs
% npm install socket.io npm WARN package.json node2@1.0.0 No description npm WARN package.json node2@1.0.0 No repository field. npm WARN package.json node2@1.0.0 No README data > ws@0.4.31 install /home/22/ex1200/node2/node_modules/socket.io/node_modules/engine.io/node_modules/ws > (node-gyp rebuild 2> builderror.log) || (exit 0) gmake: ディレクトリ `/home/22/ex1200/node2/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build' に入ります CXX(target) Release/obj.target/bufferutil/src/bufferutil.o SOLINK_MODULE(target) Release/obj.target/bufferutil.node COPY Release/bufferutil.node CXX(target) Release/obj.target/validation/src/validation.o SOLINK_MODULE(target) Release/obj.target/validation.node COPY Release/validation.node gmake: ディレクトリ `/home/22/ex1200/node2/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build' から出ます > ws@0.4.31 install /home/22/ex1200/node2/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws > (node-gyp rebuild 2> builderror.log) || (exit 0) gmake: ディレクトリ `/home/22/ex1200/node2/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build' に入ります CXX(target) Release/obj.target/bufferutil/src/bufferutil.o SOLINK_MODULE(target) Release/obj.target/bufferutil.node COPY Release/bufferutil.node CXX(target) Release/obj.target/validation/src/validation.o SOLINK_MODULE(target) Release/obj.target/validation.node COPY Release/validation.node gmake: ディレクトリ `/home/22/ex1200/node2/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/build' から出ます socket.io@1.1.0 node_modules/socket.io ├── debug@0.7.4 ├── has-binary-data@0.1.3 (isarray@0.0.1) ├── socket.io-parser@2.2.1 (isarray@0.0.1, component-emitter@1.1.2, benchmark@1.0.0, json3@3.2.6) ├── socket.io-adapter@0.2.0 (socket.io-parser@2.1.2) ├── engine.io@1.4.0 (base64id@0.1.0, debug@1.0.3, engine.io-parser@1.1.0, ws@0.4.31) └── socket.io-client@1.1.0 (to-array@0.1.3, indexof@0.0.1, component-bind@1.0.0, object-component@0.0.3, component-emitter@1.1.2, has-binary@0.1.5, parseuri@0.0.2, socket.io-parser@2.2.2, engine.io-client@1.4.0)
公式サイトのチュートリアル(http://socket.io/get-started/chat/)を当社サーバで作成する例です。
% cd nodejs
※ --saveオプションをつけて下さい。 % npm install --save express npm WARN package.json node2@1.0.0 No description npm WARN package.json node2@1.0.0 No repository field. npm WARN package.json node2@1.0.0 No README data express@4.9.7 node_modules/express ├── utils-merge@1.0.0 ├── merge-descriptors@0.0.2 ├── fresh@0.2.4 ├── cookie@0.1.2 ├── escape-html@1.0.1 ├── range-parser@1.0.2 ├── cookie-signature@1.0.5 ├── finalhandler@0.2.0 ├── vary@1.0.0 ├── media-typer@0.3.0 ├── methods@1.1.0 ├── parseurl@1.3.0 ├── serve-static@1.6.4 ├── path-to-regexp@0.1.3 ├── depd@0.4.5 ├── on-finished@2.1.0 (ee-first@1.0.5) ├── qs@2.2.4 ├── debug@2.0.0 (ms@0.6.2) ├── proxy-addr@1.0.3 (forwarded@0.1.0, ipaddr.js@0.1.3) ├── etag@1.4.0 (crc@3.0.0) ├── send@0.9.3 (destroy@1.0.3, ms@0.6.2, mime@1.2.11) ├── accepts@1.1.2 (negotiator@0.4.9, mime-types@2.0.2) └── type-is@1.5.2 (mime-types@2.0.2)
<!doctype html>
<html>
<head>
<title>Socket.IO chat</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font: 13px Helvetica, Arial; }
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
#messages { list-style-type: none; margin: 0; padding: 0; }
#messages li { padding: 5px 10px; }
#messages li:nth-child(odd) { background: #eee; }
</style>
</head>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
$('#messages').append($('<li>').text(msg));
});
</script>
</body>
</html>var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendfile('index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});% node index.js listening on *:3000