nodejs – Viết ứng dụng chat đơn giản

Bước 1: cài đặt gói phụ thuộc

Tham khảo thêm tại https://vneconomics.com/nodejs-cai-dat-nodejs-nmp-va-package-tren-ubuntu-linux-mint/

Cài gói socket.io: apt-get install socket.io (Tại thư mục gốc của app)

Bước 2: Tạo dịch vụ server.js

var io = require(‘socket.io’).listen(8000);

// open the socket connection
io.sockets.on(‘connection’, function (socket) {

// listen for the chat even. and will recieve
// data from the sender.
socket.on(‘chat’, function (data) {

// default value of the name of the sender.
var sender = ‘unregistered’;

// get the name of the sender
socket.get(‘nickname’, function (err, name) {
console.log(‘Chat message by ‘, name);
console.log(‘error ‘, err);
sender = name;
});

// broadcast data recieved from the sender
// to others who are connected, but not
// from the original sender.
socket.broadcast.emit(‘chat’, {
msg : data,
msgr : sender
});
});

// listen for user registrations
// then set the socket nickname to
socket.on(‘register’, function (name) {

// make a nickname paramater for this socket
// and then set its value to the name recieved
// from the register even above. and then run
// the function that follows inside it.
socket.set(‘nickname’, name, function () {

// this kind of emit will send to all! 😀
io.sockets.emit(‘chat’, {
msg : “naay nag apil2! si ” + name + ‘!’,
msgr : “mr. server”
});
});
});

});

Bước 3: Tạo ứng dụng client – index.php

<html>
<head>
<script src=”http://localhost:8000/socket.io/socket.io.js”></script>
<script src=”http://code.jquery.com/jquery-1.6.2.min.js”></script>
<script>
var name = ”;
var socket = io.connect(‘http://localhost:8000’);

// at document read (runs only ones).
$(document).ready(function(){
// on click of the button (jquery thing)
// the things inside this clause happen only when
// the button is clicked.
$(“button”).click(function(){

// just some simple logging
$(“p#log”).html(‘sent message: ‘ + $(“input#msg”).val());

// send message on inputbox to server
socket.emit(‘chat’, $(“input#msg”).val() );

// the server will recieve the message,
// then maybe do some processing, then it will
// broadcast it again. however, it will not
// send it to the original sender. the sender
// will be the browser that sends the msg.
// other browsers listening to the server will
// recieve the emitted message. therefore we will
// need to manually print this msg for the sender.
$(“p#data_recieved”).append(“<br />\r\n” + name + ‘: ‘ + $(“input#msg”).val());

// then we empty the text on the input box.
$(“input#msg”).val(”);
});

// ask for the name of the user, ask again if no name.
while (name == ”) {
name = prompt(“What’s your name?”,””);
}

// send the name to the server, and the server’s
// register wait will recieve this.
socket.emit(‘register’, name );
});

// listen for chat event and recieve data
socket.on(‘chat’, function (data) {

// print data (jquery thing)
$(“p#data_recieved”).append(“<br />\r\n” + data.msgr + ‘: ‘ + data.msg);

// we log this event for fun 😀
$(“p#log”).html(‘got message: ‘ + data.msg);

});
</script>
</head>
<body>
<input type=”text” id=”msg”></input><button>Click me</button>
<p id=”log”></p>
<p id=”data_recieved”></p>
</body>
</html>

Bước 4: Chạy dịch vụ tại server.js

Command: nodejs server.js

Lưu ý check quyền thực thi cho file server.js

Nguồn: https://code.google.com/p/nodejs-win/wiki/SimpleChatSystem

Tested: http://www.codeproject.com/Articles/777640/Simple-chat-application-using-NodeJS-and-Socket-IO

1 thought on “nodejs – Viết ứng dụng chat đơn giản”

Comments are closed.