【发布时间】:2015-02-04 17:00:07
【问题描述】:
注意:我发现最接近我的问题是this one,但答案是通过等待readyState为1的代理函数发送数据。这不是重复的这个问题虽然标题非常相似;我知道我的问题在于我的服务器没有将数据传回客户端,但我不知道要传递什么。
详情:
我在服务器程序中定义了一个 TCP 侦听器为 New TcpListener(ipAd, 8001),我编写了一个客户端程序为 New TcpClient() 以连接到服务器。这些程序按预期工作,一旦建立连接,客户端就准备好向服务器发送数据。
在完成客户端和服务器之后,我开始在 Web 界面上工作以充当客户端,这样我就可以从任何设备向套接字发送数据。这是 websocket 的 javascript 代码:
console.log("Attempting to connect...");
ws = new WebSocket('ws://192.168.0.10:8001/');
ws.onopen = function(msg) {
console.log('Connection successfully opened');
};
ws.onmessage = function(msg) {
console.log(msg);
};
ws.onclose = function(msg) {
console.log("Closed.");
}
ws.error = function(err){
console.log(err);
}
当我加载网页时,我在服务器控制台应用程序中看到已建立连接。这是输出:
GET / HTTP/1.1
Host: 192.168.0.10:8001
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-
cache
Upgrade: websocket
Origin: null
Sec-WebSocket-Version: 13
User-Agent: Mozilla/5.0 (Windows
NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36
Accept-Enc
oding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Sec-WebSocket-Key: key_here
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
很明显,HTTP 标头是发送和接收的;但是,我的服务器(当前)没有向客户端发送任何内容,因此当我尝试从 websocket 发出 ws.send("test"); 时,我在控制台中收到错误消息:
Uncaught InvalidStateError: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.
我的问题:我需要从我的服务器发回什么来完成握手,这样我才能用ws.send();发送数据?
【问题讨论】:
标签: javascript vb.net sockets websocket http-headers