【发布时间】:2013-11-18 07:40:20
【问题描述】:
客户:
<script type="text/javascript">
var socket = new WebSocket('ws://localhost:8183/websession');
socket.onopen = function () {
alert('handshake successfully established. May send data now...');
};
socket.onclose = function () {
alert('connection closed');
};
</script>
服务器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;
class Program
{
static void Main(string[] args)
{
var listener = new TcpListener(IPAddress.Loopback, 8183);
listener.Start();
using (var client = listener.AcceptTcpClient())
using (var stream = client.GetStream())
using (var reader = new StreamReader(stream))
using (var writer = new StreamWriter(stream))
{
writer.WriteLine("HTTP/1.1 101 Web Socket Protocol Handshake");
writer.WriteLine("Upgrade: WebSocket");
writer.WriteLine("Connection: Upgrade");
writer.WriteLine("WebSocket-Origin: http://localhost:8092");
writer.WriteLine("WebSocket-Location: ws://localhost:8183/websession");
writer.WriteLine("");
}
listener.Stop();
}
}
问题是从未建立连接并且从未调用过 onopen 函数可能是什么问题?
【问题讨论】:
-
你有什么建议?我应该用什么?
-
@Damien_The_Unbeliever 这不是真的;网络套接字绝对是 TCP 套接字,您绝对可以通过
TcpListener实现网络套接字。不过,我个人会使用裸Socket/Stream。我知道这一点因为我编写了我们在 Stack Exchange 使用的 web-socket 服务器。这……有点忙。 -
所以@MarcGravell你能告诉我为什么我的代码不起作用吗?
-
@Sora 正在处理它;p 正在回答中