2012-06-24 5 views
12

Thông thường, chúng tôi chỉ đưa dữ liệu mà chúng tôi muốn gửi là tham số của phương thức websocket.send(), nhưng tôi muốn biết có các tham số khác như IP mà chúng tôi có thể đặt trong dấu ngoặc vuông hay không. Chúng ta có thể sử dụng nó theo cách này:Tham số websocket.send()

websocket.send(ip,data); // send data to this ip address 

Hoặc tôi nên gọi các phương pháp khác?

+4

Bạn không thể chỉ thông qua một địa chỉ vì bạn được yêu cầu thiết lập một kết nối sử dụng 'websocket = new WebSocket (addresss)' ngay từ đầu. Chỉ có [một đối số] (http://dev.w3.org/html5/websockets/#dom-websocket-send) cho '.send'. – pimvdb

+0

Tôi đã thiết lập kết nối. thì tôi nên làm gì nếu tôi muốn gửi dữ liệu đến một địa chỉ IP cụ thể? Sau đó, – Amy

+0

Nếu tôi tạo một máy chủ web, máy chủ này có thể gửi dữ liệu đến địa chỉ IP cụ thể hay không và tôi nên gọi phương thức nào? – Amy

Trả lời

26

Như tôi đã hiểu, bạn muốn máy chủ có thể gửi tin nhắn từ máy khách 1 đến máy khách 2. Bạn không thể kết nối trực tiếp hai máy khách vì một trong hai đầu của kết nối WebSocket cần phải là máy chủ.

Đây là một số pseudocodish JavaScript:

Chủ đầu tư:

var websocket = new WebSocket("server address"); 

websocket.onmessage = function(str) { 
    console.log("Someone sent: ", str); 
}; 

// Tell the server this is client 1 (swap for client 2 of course) 
websocket.send(JSON.stringify({ 
    id: "client1" 
})); 

// Tell the server we want to send something to the other client 
websocket.send(JSON.stringify({ 
    to: "client2", 
    data: "foo" 
})); 

Server:

var clients = {}; 

server.on("data", function(client, str) { 
    var obj = JSON.parse(str); 

    if("id" in obj) { 
    // New client, add it to the id/client object 
    clients[obj.id] = client; 
    } else { 
    // Send data to the client requested 
    clients[obj.to].send(obj.data); 
    } 
}); 
+0

var obj = JSON.parse (str); Dòng này sẽ trả về lỗi "không xác định", bạn có biết tại sao không? Tôi đang sử dụng chrome 20 beta – Amy

+1

@Amy: Đó là mã giả; 'str' nên tham chiếu đến dữ liệu nhận được từ máy khách. Tôi không biết bạn đang sử dụng thư viện nào, vì vậy bạn sẽ phải tham khảo tài liệu hướng dẫn của nó để xem cách lấy dữ liệu. – pimvdb

+0

Trong mã khách hàng, tôi đoán bạn nên đợi cuộc gọi lại đang mở trước khi gửi. –