使用 TCP class 与 WebSocket 服务器通信

Communicating with WebSocket server using a TCP class

是否可以使用标准 TCP class 与 WebSocket 服务器接口进行发送和接收 data/messages/frames?

或者我是否需要从根本上改变 TCP class?

如果可能的话,你能给我举个例子吗? (编程语言并不重要)
例如,我发现这个 node.js 代码代表一个简单的 tcp 客户端:

var net = require('net');

var client = new net.Socket();
client.connect(1337, '127.0.0.1', function() {
    console.log('Connected');
    client.write('Hello, server!');
});

client.on('data', function(data) {
    console.log('Received: ' + data);
});

也许你可以告诉我必须更改哪些内容才能使其与 WebSocket 通信。

Websockets 是一种在 TCP/IP 上运行的协议,详见 standard's draft

所以,其实都是利用TCP/IP连接(TCP连接class/对象)来实现协议特定的握手和数据分帧

写在 Ruby 中的 Plezi Framework 正是这样做的。

它将 TCPSocket class 包装在名为 Connection(或 SSLConnection)的包装器中,并通过协议输入层(WSProtocol and HTTPProtocol classes) to the app layer and then through the Protocol output layer (the WSResponse and HTTPResponse classes) 到连接:

 TCP/IP receive -> Protocol input layer ->
     App -> Protocol output -> TCP/IP send

Websocket 握手总是从 HTTP 请求开始。您可以阅读 the Plezi's handshake code here*.

* 握手方法接收 HTTPRequest、HTTPResponse 和 App Controller,并在切换到 Websockets 之前使用它们发送所需的 HTTP 回复。

握手完成后,收到的每条消息都由消息帧(一个或多个)组成。您可以阅读 frame decoding and message extraction code used in the Plezi Framework here.

在发回消息之前,它们被分成一个或多个Websocket Protocol frames using this code and then they are sent using the TCP/IP connection

如果您google,这里有很多例子。我相信其中一些会使用您喜欢的编程语言。