查看積分策略說明發表回覆
Discuz! 代碼
提示插入
直接插入
說明訊息

插入粗體文本 插入斜體文本 插入下劃線 置中對齊 插入超級連結 插入信件位址 插入圖像 插入 flash 插入代碼 插入引言 插入列表
刪除線 直線分隔線 虛線分隔線
    
添加文字底框
內容 [字數檢查]:

表情符號

更多 Smilies
字型大小 |||
溫馨提示:本區開放遊客瀏覽。


文章關鍵字 : [功能說明]
(關鍵字可加強搜索準確性, 如關鍵字多於一組, 請以 , 作分隔, e.g. : 阿笨,shiuh,第一笨)

 關閉 URL 識別 | html 禁用
 關閉 表情符號 | 表情符號 可用
 關閉 Discuz! 代碼 | Discuz! 代碼 可用
使用個人簽名
接收新回覆信件通知
推薦放檔網絡空間

檔案(Torent, zip等)
  1. freedl
  2. multiupload
  3. btghost
  4. 便當狗
  5. mediafire
  6. pillowangel
圖片(JPG, GIF等)
  1. hotimg
  2. tinypic
  3. mousems2
  4. imageshack
  5. imm.io
>>>歡迎推薦好用空間


最新10篇文章回顧
torpedo

 發表於 2015-4-20 04:40 AM


引用:
daidai寫到:
請教有使用過 node.js 存取 mysql 的版友,同步及非同步問題

最近公司主管挖了個洞給我跳,要我做遊戲伺服器,在上位的主管認為不過就是個聊天室,但是沒想到底層協定的應用及遊戲客戶端同步接收訊息的問題,單機版的遊戲已經出貨出去,還跟客戶承諾後續會更新成連線版。小弟我的本職是網頁程式設計師,用PHP設計公司網頁及系統,找遍了 google 相關文章,實在想不出問題點在哪,所以特來請教大家一些觀念

我用 node.js 及 socket.io(支援多種協定及現成的 room 及廣播機制) 實做聊天室訊息推播架構,想把這個應用在遊戲伺服器的同步訊息收發,使用 websocket 協定,在做連線驗證機制時,碰到了難題,
以下的函式都沒回傳值,我大概知道是同步、非同步問題,也嘗試使用 https://github.com/caolan/async (async.js) 這個套件,不過始終實做不出來,麻煩大家了,感謝

function auth(username)
{
        // 引入 mysql connect
        var config = require("./mysql_db.js");
        var db_connection = config.db;

        db_connection.query("SELECT * FROM `zp_machine` LEFT JOIN `zp_customer` ON `zpm_zpc_id` = `zpc_id` WHERE `zpm_sn` =?",[username], function(err, rows, fields) {
            if(err){
                console.log(err);
                return ;
            }
                        if (rows.length)
                        {
                                console.log('認證成功');
                                return true;
                        }
                        else
                        {
                                console.log('認證失敗');
                                return false;
                        }
        });
}

if (auth(username)) <==不會為 true
{
    //do........
}

最近為了完成這個專案,沒眠沒夜的在看資料還有 try code ,忽略了結婚不到一年的老婆(一直被唸說假日不帶她出門),再加上與我家人相處的小問題,她在近日提出離婚,我也回答尊重她的想法,她又要求我暫時不要給家人知道,只好順便附上這小段牢騷,哀...這麼努力是為了誰...還不是為了撐住這個家

[daidai 在  2013-7-22 09:18 AM 作了最後編輯]

對了請問大大這是哪加公司啊?
偶再過一陣子要找新工作
不想踩到這地雷


torpedo

 發表於 2015-4-20 04:01 AM


引用:
daidai寫到:


謝謝你的回應,不過我暫時不會想去試了~等我整理好心情和房間內舒適的辦公桌椅...
老婆目前已經成前妻,工作部份我也遞辭呈了,該是換個新環境了

氣魄.............工作真的也該有個限度
除了吃飽,心情也很重要
有錢沒地方花也是徒然

另一伴也是很麻煩

有的嫌沒時間陪她
有的很抱怨家用
有的又閒你工作態度,沒有專心在上面,沒有上進心
(像我就是作到死.....被強迫從另一行興趣轉到網頁程式[.....相信偶這就是老闆的心態]
以後還要面對程式的進步....拜託,誰那麼無敵能當永遠的明星員工.......你生病家裡有事....誰裡你)

前陣子看物件程式的設計
看得我頭痛了好久好久.........除了物件設計觀念
還有如何設計class.........還有例如商品類別樹的建構(用遞迴)
但老闆只是冷眼激你看你行不行....行就多給錢再繼續鞭策你
反正就是給錢.....他自己也不會寫.....不知道你的痛苦

拜託40了頭殼都快燒壞了

台灣老闆都這麼愛操人嗎?

真的是很討厭.........

對啦
找個好相處,個性隨和,有同情心的對象比較重要

這樣大家比較能相處愉快互相包容幫忙

若沒有緣份遇到(好)對象就算了.....何必找麻煩......反正生理衝動過去就好了

[torpedo 在  2015-4-20 04:36 AM 作了最後編輯]


chrixtal

 發表於 2014-5-24 07:50 AM

結婚不到一年就分啦...

恭喜你回復自由之身!


Ailio

 發表於 2013-8-6 10:17 AM

真遺憾最後的結果是這樣

不過危機也可能是轉機

預祝驢友您能早日撥雲見日 人生的旅途與職場上都能找到新的方向


daidai

 發表於 2013-8-2 03:51 PM


引用:
ash11tw寫到:
nodejs基本上都是async的
所有東西都要在callback裡面跑

db_connection.query("SELECT * FROM `zp_machine` LEFT JOIN `zp_customer` ON `zpm_zpc_id` = `zpc_id` WHERE `zpm_sn` =?",[username], function(err, rows, fields) {
           //callback通常會回傳兩個值
          //第一個通常是error
          //所以一開始會檢測這個
            if(err){
                console.log(err);
                return ;
            }
           //接下來是從mysql取出來的值
                        if (rows.length)
                        {
                                console.log('認證成功');
                                return true;
                        }
                        else
                        {
                                console.log('認證失敗');
                                return false;
                        }
                      假如你有接下來認證的code要寫在這裡
                     if (auth(username)) <==不會為 true
                     {
                         //do........
                     }
        });

基本上 nodejs is an event driven structure so every result is passed to callback function for  next step


謝謝你的回應,不過我暫時不會想去試了~等我整理好心情和房間內舒適的辦公桌椅...
老婆目前已經成前妻,工作部份我也遞辭呈了,該是換個新環境了


ash11tw

 發表於 2013-7-31 05:35 AM

nodejs基本上都是async的
所有東西都要在callback裡面跑

db_connection.query("SELECT * FROM `zp_machine` LEFT JOIN `zp_customer` ON `zpm_zpc_id` = `zpc_id` WHERE `zpm_sn` =?",[username], function(err, rows, fields) {
           //callback通常會回傳兩個值
          //第一個通常是error
          //所以一開始會檢測這個
            if(err){
                console.log(err);
                return ;
            }
           //接下來是從mysql取出來的值
                        if (rows.length)
                        {
                                console.log('認證成功');
                                return true;
                        }
                        else
                        {
                                console.log('認證失敗');
                                return false;
                        }
                      假如你有接下來認證的code要寫在這裡
                     if (auth(username)) <==不會為 true
                     {
                         //do........
                     }
        });

基本上 nodejs is an event driven structure so every result is passed to callback function for  next step


daidai

 發表於 2013-7-23 01:07 AM

此段為 callback function
function(err, rows, fields) {
            if(err){
                console.log(err);
                return ;
            }
                        if (rows.length)
                        {
                                console.log('認證成功');
                                return true;
                        }
                        else
                        {
                                console.log('認證失敗');
                                return false;
                        }
        }

相關說明Node.js 台灣社群協作電子書


335012

 發表於 2013-7-22 07:21 PM

這裡問問?

婚姻的問題...
小弟倒覺得加減反映給上司知道一下....
別把一堆工作都派給您...


ericshliao

 發表於 2013-7-22 12:08 PM

因為那一行括號不對稱,出現err,然後進入後面的err condition裡,一定會return false...
            if(err){
                console.log(err);
                return ;
            }


cbc

 發表於 2013-7-22 09:18 AM

沒在用 nodejs 不過那個 return true 及 false 放在那個 function 應該不是  auth 的回傳

把 //do 的內容用成匿名 function 傳給 auth , 之後在 auth 中 把 sql 的結果傳給他 run?



看了一下 async.js ,如果要給其他懂 nodejs 的人看,你貼一下你實作的邏輯我想會更好
用 async 跑有順序的 function 用在你的例子好像會更費事的感覺

以上為不懂 node js 的情況下,給的想法

[cbc 在  2013-7-22 09:22 AM 作了最後編輯]


本主題回覆較多,請 點擊這裡 檢閱。



所在時區為 GMT+8, 現在時間是 2024-3-29 11:11 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.020442 second(s), 7 queries , Qzip disabled