我创建了一个新协议,而不是使用在(tcplistener或OWIN)和tcpclient上运行的http协议。 现在,我想将其托管到IIS(使用OWIN或Katana等)。
注意:
1。我不想使用WCF,SignalR,WebSocket和其他组件
2。我可以将协议的第一行标题更改为Send Owin host及其工作示例:
public class WebSocketConnectionMiddleware : OwinMiddleware
{
public WebSocketConnectionMiddleware(OwinMiddleware next)
: base(next)
{
}
public override Task Invoke(IOwinContext context)
{
//this line will call after tcp connect
return null;
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Use<WebSocketConnectionMiddleware>();
// New code:
app.Run(async context => {
context.Response.ContentType = "text/plain";
await context.Response.WriteAsync("Hello, world.");
});
try
{
TcpClient tcpClient = new TcpClient();
tcpClient.Connect("localhost", 7994);
var bytes = Encoding.ASCII.GetBytes(@"SignalGo-4.0 http://localhost:7994 HTTP/1.1
Host: localhost:7994
");
tcpClient.GetStream().Write(bytes, 0, bytes.Length);
}
catch (Exception ex)
{
}
}
}
但是我无法对NetworkStream读取或写入任何内容(tcpclient连接在哪里?) 问题是:
1.OWIN中是否可以访问TCPClient或NetworkStream进行长时间的数据读写?
2。我可以制定自定义协议吗?例如完整更改第一行“ GET localhost:443 HTTP / 1.0 \ r \ n Host:localhost”主机和标头等?