Я создал новый протокол вместо того, чтобы использовать протокол HTTP, он работает на (tcplistener или OWIN) и tcpclient.Теперь я хочу разместить его в IIS (используйте OWIN или Katana и т. Д.).
Примечания:
1. Я не хочу использовать WCF, SignalR, WebSocket и другие компоненты
2.Я могу изменить заголовок первой строки моего протокола на хост Send Owin и пример его работы:
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.Есть ли способ доступа к TCPClient или NetworkStream в OWIN для длительного чтения / записи данных?
2.Могу ли я создать свой собственный протокол?например полная замена первой строки «GET localhost: 443 HTTP / 1.0 \ r \ n Host: localhost», хост и заголовки и т. д.