2014-06-27 4 views
5

वेब सॉकेट मेरे सहयोगी द्वारा जावास्क्रिप्ट में लिखा गया है। मैं कनेक्ट करने में कामयाब रहा। सबसे पहले मुझे एक परीक्षण खाते का उपयोग कर आवेदन पर लॉग इन करना होगा। मुझे एक जेसन के माध्यम से ईमेल और पासवर्ड भेजना है। मैंने NuGet का उपयोग कर जेसन.Net पैकेट स्थापित किया है।क्लाइंट क्लाइंट वेब क्लास का उपयोग कर विंडोज फोन 8 पर वेब सॉकेट के माध्यम से संदेश कैसे भेजें/प्राप्त करें?

कुछ कोड है कि मैं अपने reaserch पर पाया इस है, लेकिन मुझे समझ नहीं आता कि खंड का उपयोग कर अपने डेटा भेजने के लिए कैसे।

var buffer = new byte[1024]; 
var segment = new ArraySegment<byte>(buffer); 
webSocket.SendAsync(segment, WebSocketMessageType.Text, true, CancellationToken.None); 

बेशक, मैं एक वस्तु

User user=new User(); 
user.Email="[email protected]"; 
user.Password="pass"; 
string json = JsonConvert.SerializeObject(user); 

उपयोग कर सकते हैं लेकिन यह किसी काम के नहीं होगा क्योंकि विधि SendAsync खंड पर केवल बाइट प्रकार स्वीकार करता है।

सभी मैं चाहता हूँ कि डेटा भेजने के लिए है, और अगर में लॉग सफल होता है, मैं उपयोगकर्ता के बारे में (JSON प्रारूप में) अन्य डेटा प्राप्त करना चाहिए।

एक तरफ ध्यान दें के रूप में, मैं काफी वेब सॉकेट करने के लिए नया हूँ, मैं ASP.NET वेब एपीआई से http प्रोटोकॉल का उपयोग किया 2.

उत्तर

11

मैं Windows Phone 8 के बारे में पता नहीं है, लेकिन कोड आप चिपकाया द्वारा ऐसा लगता है नियमित रूप से नेट ClientWebSocket के समान है, इसलिए यहाँ आप कुछ उदाहरण हैं:

public static Task SendString(ClientWebSocket ws, String data, CancellationToken cancellation) 
{ 
    var encoded = Encoding.UTF8.GetBytes(data); 
    var buffer = new ArraySegment<Byte>(encoded, 0, encoded.Length); 
    return ws.SendAsync(buffer, WebSocketMessageType.Text, true, cancellation); 
} 

public static async Task<String> ReadString(ClientWebSocket ws) 
{ 
    ArraySegment<Byte> buffer = new ArraySegment<byte>(new Byte[8192]); 

    WebSocketReceiveResult result = null; 

    using (var ms = new MemoryStream()) 
    { 
     do 
     { 
      result = await ws.ReceiveAsync(buffer, CancellationToken.None); 
      ms.Write(buffer.Array, buffer.Offset, result.Count); 
     } 
     while (!result.EndOfMessage); 

     ms.Seek(0, SeekOrigin.Begin); 

     using (var reader = new StreamReader(ms, Encoding.UTF8)) 
      return reader.ReadToEnd(); 
    } 
} 

कुछ संकलन नहीं करता है या WP8 में मौजूद है, बस एक बराबर हैं।

+1

आपके उत्तर के लिए धन्यवाद! इस बीच मैं पता लगा (मैं webSockcetObject.Send (JSONObject लिखा था) और बस इतना ही है)। मैं सवाल नष्ट करने के लिए कोशिश की है ... लेकिन यह चौखट, साइट पर दिखाई देता शायद stackoverflow WebApplication एक नरम हटाने का उपयोग करता है। वैसे भी आपका समाधान सही है, और मैं आपको जवाब दूंगा लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं है। सबसे अच्छा मैं कर सकता हूं इसे स्वीकार करना और धन्यवाद देना! :) –

संबंधित मुद्दे