• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠。
            隨筆 - 397, 文章 - 0, 評論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            linux下的node.js

            一、node.js和websocket
            node.js是個js的運行環(huán)境,封裝了對GoogleV8引擎(應用于Google Chrome瀏覽器);
            websocket的握手是通過http協(xié)議來實現(xiàn)的,握手成功,下面就是websocket協(xié)議部分了,不是http了。
            WebSocket 協(xié)議本質(zhì)上是一個基于 TCP 的協(xié)議。解決了Web Pages (Client) 和遠程主機的雙向通信問題
            WebSocket API 規(guī)范由 W3C制定, WebSocket 協(xié)議規(guī)范由 IETF 制定 (RFC 6455)。是HTML5一種新的協(xié)議
            下載安裝如下:
            wget http://nodejs.org/dist/v0.6.14/node-v0.6.14.tar.gz
            解壓縮,切到壓縮路徑下:./configrue;make;make install
            安裝node.js的websocket模塊;npm Install webscoket等
            進入到node-v0.6.14/node_modules/test
            在libwebsockets-test.html的head部分加入<script src='libwebsockets-test-client.js'></script>
            啟動websocket服務node libwebsockets-test-server.js --port=8000(或是其他的端口號)
            然后我們就可以在客戶端訪問這個8000端口,可以正確的訪問到這個頁面;
            在調(diào)試的時候要注意,服務器和客戶端要放在以前,原因就是在很多的例子,使用了socket.io這個node.js的擴展庫,
            如果客戶端沒有這個,那是不行;網(wǎng)上很多例子無法運行,就是這個原因?qū)е驴蛻舳撕头掌鳠o法握手成功;

            websocket也有c++接口,linux下用命令git clone git://git.warmcat.com/libwebsockets instead
            完成后,這個installed目錄下就是websocket的c++接口內(nèi)容,test-server下有測試例子代碼

            websocket請求的例子
            GET /chat HTTP/1.1
            Host: server.example.com
            Upgrade: websocket
            Connection: Upgrade
            Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
            Origin: http://example.com
            Sec-WebSocket-Protocol: chat, superchat
            Sec-WebSocket-Version: 13
            server的響應包包括:
            ◦處理請求包括處理GET 方法
            ◦驗證Upgrader頭域
            ◦驗證Connection 頭域
            ◦處理Sec-WebSocket-Key頭域,方法見上;
            ◦處理Sec-WebSocket-Version
            ◦處理Origin頭域,可選, 瀏覽器必須發(fā)送該頭域
            ◦處理Sec-WebSocket-Protocol頭域,可選
            ◦處理Sec-WebSocket-Extensions 頭域,可選
            ◦處理其他頭域,可選
            ◦Server 發(fā)送握手響應,這里只介紹服務器接受該連接情況下,包括:
            ◦http Status-Line
            ◦Upgrade 頭域 ,值必須是"websocket"
            ◦Conntion頭域,值必須是:“Upgrade”
            ◦Sec-WebSocket-Accept” 頭域,該頭域的值即處理Sec-WebSocket-Key" 域后的結(jié)果。
            ◦可選的"Sec-WebSocket-Protocol"頭域
            ◦可選的"Sec-WebSocket-Extensions"頭域

            二、node.js和mysql
            在node.js要使用mysql,必須安裝mysql的擴展庫:npm install mysql
            下面的測試代碼(js)

            var Client = require('mysql').Client,
            client = new Client();

            client.password = 'mysql'; //密碼
            client.user = 'root'; //用戶名
            client.port = 5500; //mysql的端口
            client.host = '211.23.5.1'; //這里要注意如果是ip不是域名,不想填寫真實的ip,不能用localhost或127.0.0.1

            var DATABASE_NAME = 'neekey_database',
            TABLE_NAME = 'neekey_table';

            //console.log(client.connect());

            client.query('CREATE DATABASE '+ DATABASE_NAME, function(err) {
            if (err && err.number != Client.ERROR_DB_CREATE_EXISTS) {

            console.log(err);
            throw err;
            }
            });
            // If no callback is provided, any errors will be emitted as `'error'`
            // events by the client
            client.query('USE '+ DATABASE_NAME);
            client.query(
            'CREATE TABLE '+ TABLE_NAME +
            '(id INT(11) AUTO_INCREMENT, '+
            'title VARCHAR(255), '+
            'text TEXT, '+
            'created DATETIME, '+
            'PRIMARY KEY (id))'
            );

            client.query(
            'INSERT INTO '+ TABLE_NAME +' '+
            'SET title = ?, text = ?, created = ?',
            ['super cool', 'this is a nice text', '2010-08-16 10:00:23']
            );

            var query = client.query(
            'INSERT INTO '+ TABLE_NAME +' '+
            'SET title = ?, text = ?, created = ?',
            ['another entry', 'because 2 entries make a better test', '2010-08-16 12:42:15']
            );

            client.query(
            'SELECT * FROM '+ TABLE_NAME,
            function selectCb(err, results, fields) {
            if (err) {
            throw err;
            }

            console.log(results);
            console.log(fields);
            client.end();
            }
            )

            用node執(zhí)行這個js就可以,注意js文件的路徑,不能放到任意路徑下,需要放到和node
            同級目錄下才可以,否則無法執(zhí)行成功

            posted on 2012-04-07 10:23 Benjamin 閱讀(2364) 評論(0)  編輯 收藏 引用 所屬分類: linux

            伊人丁香狠狠色综合久久| 久久国产精品久久精品国产| 看全色黄大色大片免费久久久| 久久久久久av无码免费看大片| 日产精品99久久久久久| 91精品国产色综久久| 国内精品久久久久影院亚洲| 99久久99久久久精品齐齐| 久久夜色精品国产亚洲| 国产精品久久久久久久久鸭| 久久乐国产精品亚洲综合| 97久久精品无码一区二区| 中文字幕久久亚洲一区| 大蕉久久伊人中文字幕| 国产69精品久久久久99| 亚洲色欲久久久综合网| 99久久精品免费看国产一区二区三区| 亚洲一区中文字幕久久| 国产亚洲精久久久久久无码| 精品永久久福利一区二区| 午夜精品久久久久| 久久婷婷五月综合成人D啪| www.久久精品| 亚洲午夜久久久久妓女影院| 久久天天躁狠狠躁夜夜avapp| 久久亚洲国产精品123区| 亚洲成人精品久久| 久久亚洲精品无码AV红樱桃| 怡红院日本一道日本久久| 国产精品美女久久久久久2018| 久久综合九色综合网站| 国产精品中文久久久久久久| 一级做a爰片久久毛片看看| 精品无码久久久久久久动漫| 性做久久久久久久久老女人| 久久久久久久精品妇女99| 亚洲精品乱码久久久久久按摩| 97久久精品无码一区二区| 99久久99久久| 久久国产精品一区| 亚洲伊人久久成综合人影院|