nodejs実現した簡単なチャットルーム機能共有
7538 ワード
今日は簡単なチャットルームを実現します.バックグラウンドはnodejsで、クライアントとサービス端末の通信用sockete.ioで、これは比較的成熟したwebsocketのフレームです.
初期動作
1.expressをインストールして、これを使ってsocket.ioを管理して、および静的なページ、命令npm install express--save、--saveはパケットをpackge.jsonファイルに追加することができます.2.socket.ioをインストールして、npm install sockete.ioを命令します.
サービスコードを作成する
まず私達はexpressを通じてウェブサイトを管理します.そしてsocket.ioの実例に添付します.socket.ioは初めて接続するのでhttpプロトコルが必要です.
サービスは第三者のwebsokcetフレームを採用しているので、フロントエンドページは単独でsocket.ioクライアントコードを参照してください.ソースファイルはsocket.ioモジュールから探してもいいです.windows下のパスはnode_です.modules\sockett.ioode_modules\sockett.io-client\dist、ここに開発版と圧縮版があります.標準は開発版を引用すればいいです.
フロントエンドは主に入力ニックネームチェック、メッセージ処理、完全コードは以下の通りです.
初期動作
1.expressをインストールして、これを使ってsocket.ioを管理して、および静的なページ、命令npm install express--save、--saveはパケットをpackge.jsonファイルに追加することができます.2.socket.ioをインストールして、npm install sockete.ioを命令します.
サービスコードを作成する
まず私達はexpressを通じてウェブサイトを管理します.そしてsocket.ioの実例に添付します.socket.ioは初めて接続するのでhttpプロトコルが必要です.
var express = require('express'),
io = require('socket.io');
var app = express();
app.use(express.static(__dirname));
var server = app.listen(8888);
var ws = io.listen(server);
サーバ接続イベントを追加し、クライアント接続が成功したら、すべてのオンラインユーザに通知し、ユーザがメッセージを送信すると、他のユーザにブロードキャスト通知する.
ws.on('connection', function(client){
console.log('\033[96msomeone is connect\033[39m
');
client.on('join', function(msg){
//
if(checkNickname(msg)){
client.emit('nickname', ' !');
}else{
client.nickname = msg;
ws.sockets.emit('announcement', ' ', msg + ' !');
}
});
//
client.on('send.message', function(msg){
client.broadcast.emit('send.message',client.nickname, msg);
});
// ,
client.on('disconnect', function(){
if(client.nickname){
client.broadcast.emit('send.message',' ', client.nickname + ' !');
}
})
})
クライアントはニックネームで表示されているので、サーバーはニックネームの重複を検出する関数が必要です.
//
var checkNickname = function(name){
for(var k in ws.sockets.sockets){
if(ws.sockets.sockets.hasOwnProperty(k)){
if(ws.sockets.sockets[k] && ws.sockets.sockets[k].nickname == name){
return true;
}
}
}
return false;
}
顧客サービスのコードを作成するサービスは第三者のwebsokcetフレームを採用しているので、フロントエンドページは単独でsocket.ioクライアントコードを参照してください.ソースファイルはsocket.ioモジュールから探してもいいです.windows下のパスはnode_です.modules\sockett.ioode_modules\sockett.io-client\dist、ここに開発版と圧縮版があります.標準は開発版を引用すればいいです.
フロントエンドは主に入力ニックネームチェック、メッセージ処理、完全コードは以下の通りです.
socket.io