Nodejs実現WebSocketコードの例


一、環境設定
1.ダウンロードインストールnodejshttps://nodejs.org/en/download/
2.インストールが完了したら、cmdコマンドを開いて、node--versionを実行します。インストールが成功したかどうか確認してください。もしこのコマンドがないなら、環境変数を設定してください。正常な場合、インストール後に環境変数を自動的に設定します。
二、nodejsモジュールの配置
1.expressモジュールの設置
モジュール紹介:Expressは簡潔で柔軟なnode.js Webアプリケーションのフレームワークであり、様々なWebアプリケーションを作成し、豊富なHTTPツールを提供します。
インストール方式:プロジェクトパスでnpm install expressを実行する
三、ハローワード
1.プロジェクトディレクトリとしてディレクトリを作成します。
2.demo.jsを作成する

var express = require('express'),//    web  
  app = express(),
  server = require('http').createServer(app);//  http         
  server.listen(8000);//      
  app.get('/', function (req, res) {
   res.send('Hello World');//   Ip:8000 ,      
})
3.プロジェクトディレクトリの下でshift右ボタンを押して、「ここでコマンドウィンドウを開く」を選択して、node demo.jsを実行して、エラーがないと起動できます。
4.ブラウザでip:portにアクセスすれば出力できます。
四、アクセスページ
1.プロジェクトパスにページフォルダを作成し、htmlページを作成するa.
2.作成したばかりのdemo.jsに下記のコードを追加します。

var express = require('express'),//    web  
  app = express(),
     server = require('http').createServer(app);//  http         
     server.listen(8000);//      
     app.use('/', express.static(__dirname + '/pages'));//      , pages   a.html  ,   ip:8000/a.html   
     //app.use('/', express.static(__dirname + '/pages1'));//      ,          ,      ,    
     app.get('/', function (req, res) {
      res.send('Hello World');//   Ip:8000 ,      
 })
3.再起動後にip:port/a.にアクセスすれば、このページにアクセスできます。
五、他のjsを引用する
1.プロジェクトのルートディレクトリでinclude.jsを作成します。内容は以下の通りです。

var hello = {
  sayHello:function(name){  
       return 'hello,'+name+',this is include.js';
  }
}
module.exports=hello;
2.demo.jsに追加する

var express = require('express'),//    web  
  app = express(),
  include =require('./include.js'),//  js
  server = require('http').createServer(app);//  http         
  server.listen(8000);//      
  app.use('/', express.static(__dirname + '/pages'));//      , pages   a.html  ,   ip:8000/a.html   . "__dirname"         
    app.get('/', function (req, res) {
   res.send(include.sayHello("demo"));
  })
六、解析要求パラメータ
1.demo.jsに追加し、リンクを要求するhttp://ip:port/?p1=p&p2=2

var express = require('express'),//    web  
  app = express(),
  url = require('url'),
  server = require('http').createServer(app);//  http         
  server.listen(8000);//      
  app.use('/', express.static(__dirname + '/pages'));//      , pages   a.html  ,   ip:8000/a.html   . "__dirname"         
  app.get('/', function (req, res) {
 
   //    url   
  var params = url.parse(req.url, true).query;
  res.write("   :" + params.p2);
  res.write("
"); res.write(" URL:" + params.p1); res.end(); })
七、http依頼を送る
1.ベスト
demo.jsに下記の内容を追加して訪問します。http://mykl:8000/? parameter=2

var express = require('express'),//    web  
  app = express(),
  url = require('url'),
  util = require('util'),
  include =require('./include.js'),
  server = require('http').createServer(app);//  http         
  server.listen(8000);//      
  app.use('/', express.static(__dirname + '/pages'));//      , pages   a.html  ,   ip:8000/a.html   . "__dirname"         
  //app.use('/', express.static(__dirname + '/pages1'));//      ,          ,      ,    
  app.get('/', function (req, res) {
    //    url   
    var params = url.parse(req.url, true).query;
    post('https://cang.mini-kaola.cn/pages/MobileWeb/getStorageDatil.htm',{cangId: params.cangid},function(data){
      res.write(data);
      res.end();
    });
  })
   
 
   
  function post(url,data,fn){
   data=data||{};
   var content=require('querystring').stringify(data);//       
   var parse_u=require('url').parse(url,true);
   var isHttp=parse_u.protocol=='http:';
   var options={
      host:parse_u.hostname,
      port:parse_u.port||(isHttp?80:443),
      path:parse_u.path,
      method:'POST',
      headers:{
         'Content-Type':'application/x-www-form-urlencoded',
         'Content-Length':content.length
      }
    };
    var req = require(isHttp?'http':'https').request(options,function(res){//    
     var _data='';
     res.on('data', function(chunk){
       _data += chunk;
     });
     res.on('end', function(){
        fn!=undefined && fn(_data);
      });
    });
    req.write(content);
    req.end();
  }
2.get
demo.jsに下記の内容を追加して訪問します。http://mykl:8000/?parameter=2

var express = require('express'),//    web  
  app = express(),
  http=require('http'),
  url = require('url'),
  include =require('./include.js'),
  server = http.createServer(app);//  http         
  server.listen(8000);//      
  app.use('/', express.static(__dirname + '/pages'));//      , pages   a.html  ,   ip:8000/a.html   . "__dirname"         
  //app.use('/', express.static(__dirname + '/pages1'));//      ,          ,      ,    
  app.get('/', function (req, res) {
    //    url   
    var params = url.parse(req.url, true).query;
 
    //get      
    http.get("http://mykl/storage/pages/MobileWeb/getStorageDatil.htm?cangId="+params.cangid,function(req1,res1){ 
      var html=''; 
      req1.on('data',function(data){ 
        html+=data; 
      }); 
      req1.on('end',function(){ 
      res.write(html);
      res.end();
      }); 
    });
     
  })
八、socket
1.socketモジュールの取り付け
npm install sockete.io
2.前の段階でインストールしたモジュールパスに入り、socket.io.jsを見つけます。
3.pageの下にhtmlを作成し、上のjsを引用する。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>socket</title>
</head>
<body>
  <dev id="show"/>
  <br/>
  <input type="text" id="nickname"/>  <br/>
  <input type="text" id="inmsg"/>
  <input type="button" id="sendBtn" value="  " />
  <br/>
</body>
<script src="socket.io.js"></script>
<script src="jquery-1.11.3.min.js"></script>
<script>
$(function(){
  var socket=io.connect();//        
  $('#sendBtn').click(function(){
    var nickname = $('#nickname').val();
    var fatext = $('#inmsg').val();
    if(fatext!=""){
      socket.emit('famsg', nickname+"-"+new Date().toTimeString().substr(0, 8)+":"+fatext+"<br/>");
    }
  });
  socket.on('jiemsg', function(msg) {
    $("#show").append(msg);
  });
});
</script>
</html>
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。