是否可以使用标准 TCP 类向 WebSocket 服务器接口(interface)发送和接收数据/消息/帧?
或者我是否需要从根本上改变 TCP 类?
如果可能的话,你能给我举个例子吗? (编程语言并不重要)
例如,我找到了代表简单 tcp 客户端的 node.js 代码:
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 上运行的协议(protocol),详见 standard's draft .
所以,其实都是利用TCP/IP连接(TCP连接类/对象)来实现协议(protocol)特定的握手和数据分帧。
Plezi Framework ,用 Ruby 编写,正是这样做的。
它将 TCPSocket 类包装在名为 Connection
(或 SSLConnection
)的包装器中,并通过协议(protocol)输入层(WSProtocol 和 HTTPProtocol 类)运行数据) 到应用层,然后通过协议(protocol)输出层(WSResponse 和 HTTPResponse 类)到连接:
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然后他们是sent using the TCP/IP connection .
如果你谷歌一下,有很多例子。我相信其中一些会使用您喜欢的编程语言。
关于sockets - 使用 TCP 类与 WebSocket 服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828918/