Tôi nghĩ rằng this là thứ bạn đang tìm kiếm. Ví dụ nhanh sử dụng mã máy chủ của bạn:
var WebSocketClient = require('websocket').client;
var client = new WebSocketClient();
client.on('connectFailed', function(error) {
console.log('Connect Error: ' + error.toString());
});
client.on('connect', function(connection) {
console.log('WebSocket client connected');
connection.on('error', function(error) {
console.log("Connection Error: " + error.toString());
});
connection.on('close', function() {
console.log('echo-protocol Connection Closed');
});
connection.on('message', function(message) {
if (message.type === 'utf8') {
console.log("Received: '" + message.utf8Data + "'");
}
});
connection.sendUTF("Hello world");
});
client.connect('ws://127.0.0.1:8082/echo', "", "http://localhost:8082");
Để làm việc này, bạn cần phải sửa đổi mã WebSocketClient trong lib/WebSocketCLient.js
. Bình luận những dòng này ra (dòng 299-300 trên máy tính của tôi):
//this.failHandshake("Expected a Sec-WebSocket-Protocol header.");
//return;
Đối với một số lý do thư viện WebSocket mà bạn cung cấp dường như không gửi "Sec-WebSocket-Nghị định thư" tiêu đề, hoặc ít nhất là khách hàng không tìm thấy nó. Tôi đã không làm quá nhiều thử nghiệm, nhưng một báo cáo lỗi có lẽ nên được nộp ở đâu đó.
Dưới đây là một ví dụ sử dụng một khách hàng Go:
package main
import (
"fmt"
"code.google.com/p/go.net/websocket"
)
const message = "Hello world"
func main() {
ws, err := websocket.Dial("ws://localhost:8082/echo", "", "http://localhost:8082")
if err != nil {
panic(err)
}
if _, err := ws.Write([]byte(message)); err != nil {
panic(err)
}
var resp = make([]byte, 4096)
n, err := ws.Read(resp)
if err != nil {
panic(err)
}
fmt.Println("Received:", string(resp[0:n]))
}
Bạn có chắc chắn muốn nói đến node.js và không phải là WebSockets của trình duyệt không? – tjameson
Trình duyệt có thể sử dụng dịch vụ websocket. Nhưng những gì tôi quan tâm là liệu một ứng dụng nodejs độc lập có thể tiêu thụ nó hay không. –