2012-03-03 59 views
0

我正在建設一個PHP客戶端(我已經有一個C#客戶端)作爲概念的證明。 PHP客戶端將使用SOAP連接到相同的.NET服務器。舉例來說,我正在使用遊戲大酒杯。客戶端PHP調用.NET的web服務保持會話信息

現在首先C#客戶端工作得很好,但PHP中存在一個問題。經過多次調試後,我發現PHP總是爲每個遠程服務器調用使用一個新連接。這使得編程遊戲成爲不可能。

舉例來說,我有一個剛剛建立的客戶端這樣的(client.php)PHP文件:

try { 
    $client = @new soapClient("http://localhost:8000/BlackJack/Service?wsdl", 
     array(
      "trace" => 1, 
      "exceptions" => 0, 
      "cache_wsdl" => 0) 
     ); 

} catch (Exception $e) { 
    print 'Caught exception: ' . $e->getMessage() . "\n"; 

} 

然後在我的主文件(生病使用jQuery和AJAX調用動態加載但我現在只是測試)我有以下代碼(blackJackClient.php):

require_once("client.php"); 
$ini = ini_set("soap.wsdl_cache_enabled","0"); 
$BetAmountPost = 100; 
    print_r($result = $client->buttonDeal_Click(array("BetAmount" => (string)$BetAmountPost))->buttonDeal_ClickResult); 
    print_r($result = $client->PlayerMoney()->PlayerMoneyResult); 

第一個電話將開始一個新的遊戲(交易)和他的球員下注的金額(例如100)獲取減去總金額(1000)。所以,我會得到什麼結果中返回的錢= 900

以下突擊隊會問什麼賺錢我現在已經和一個期望得到返回900,但沒有代替我有1000(我的起點金額)。

所以我的問題是我怎麼能讓所有的呼叫都在1個會話中進行,所以我們仍然使用相同的連接?

謝謝!

回答

1

由於SOAP使用HTTP協議,並且HTTP是無狀態的,因此無法在遊戲會話期間保持連接處於打開狀態。 相反,您應該將每個請求的用戶身份驗證發送到服務器。