CŨ chỉ sử dụng tham chiếu
Sự phụ thuộc
sử dụng express, socket.io, node_redis và mã mẫu cuối cùng nhưng không kém phần quan trọng từ media fire.
Cài đặt node.js + npm (không phải root)
Trước tiên, bạn nên (nếu bạn chưa thực hiện việc này) cài đặt node.js + npm trong 30 giây (đúng cách vì bạn KHÔNG NÊN chạy npm dưới dạng root ):
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl http://npmjs.org/install.sh | sh
Cài đặt phần phụ thuộc
Sau khi cài đặt node + npm, bạn nên cài đặt các phụ thuộc bằng cách phát hành:
npm install express
npm install socket.io
npm install hiredis redis # hiredis to use c binding for redis => FAST :)
Tải xuống mẫu
Bạn có thể tải xuống mẫu hoàn chỉnh từ mediafire.
Giải nén gói
unzip pbsb.zip # can also do via graphical interface if you prefer.
Có gì bên trong zip
./app.js
const PORT = 3000;
const HOST = 'localhost';
var express = require('express');
var app = module.exports = express.createServer();
app.use(express.staticProvider(__dirname + '/public'));
const redis = require('redis');
const client = redis.createClient();
const io = require('socket.io');
if (!module.parent) {
app.listen(PORT, HOST);
console.log("Express server listening on port %d", app.address().port)
const socket = io.listen(app);
socket.on('connection', function(client) {
const subscribe = redis.createClient();
subscribe.subscribe('pubsub'); // listen to messages from channel pubsub
subscribe.on("message", function(channel, message) {
client.send(message);
});
client.on('message', function(msg) {
});
client.on('disconnect', function() {
subscribe.quit();
});
});
}
./public/index.html
<html>
<head>
<title>PubSub</title>
<script src="/socket.io/socket.io.js"></script>
<script src="/javascripts/jquery-1.4.3.min.js"></script>
</head>
<body>
<div id="content"></div>
<script>
$(document).ready(function() {
var socket = new io.Socket('localhost', {port: 3000, rememberTransport: false/*, transports: ['xhr-polling']*/});
var content = $('#content');
socket.on('connect', function() {
});
socket.on('message', function(message){
content.prepend(message + '<br />');
}) ;
socket.on('disconnect', function() {
console.log('disconnected');
content.html("<b>Disconnected!</b>");
});
socket.connect();
});
</script>
</body>
</html>
Khởi động máy chủ
cd pbsb
node app.js
Khởi động trình duyệt
Tốt nhất nếu bạn khởi động google chrome (vì hỗ trợ websockets, nhưng không cần thiết). Truy cập http://localhost:3000
để xem mẫu (ban đầu bạn không thấy gì ngoài PubSub
như tiêu đề).
Nhưng trên publish
tới kênh pubsub
bạn sẽ thấy một tin nhắn. Dưới đây chúng tôi xuất bản "Hello world!"
vào trình duyệt.
Từ ./redis-cli
publish pubsub "Hello world!"