evpp icon indicating copy to clipboard operation
evpp copied to clipboard

如何使得多种服务运行在同一进程内,希望提供个例子?

Open hug2008 opened this issue 6 years ago • 3 comments

如何使得同一进程内同时运行evpp::http::Server & evpp::udp::Server & evpp::TCPServer server 三种服务各一个实例? 谢谢!

hug2008 avatar Oct 30 '18 03:10 hug2008

创建 多个 TcpServer 或 http:Service 。然后用同一个 EventLoop 就可以了。 so easy。

只是有点不太好的地方, http::Service 不是多线程的。httpServer 又不能用 EventLoop.

redfox1999 avatar Nov 05 '18 04:11 redfox1999

要是多个 TCP/UDP服务,参考 multi_accept 例子即可; 现在想看看 TCP / HTTP 服务一起高效运行的例子

hug2008 avatar Nov 05 '18 06:11 hug2008

	evpp::TCPServer server(&loop, "0.0.0.0:8088", "server1", 4);
	server.Init();
	server.SetConnectionCallback(ClientConnectionCallback);
	server.SetMessageCallback(ClientMessageCallback);
	server.Start();

	evpp::TCPServer server2(&loop, "0.0.0.0:8089", "server2", 4);
	server2.Init();
	server2.SetConnectionCallback(ClientConnectionCallback);
	server2.SetMessageCallback(ClientMessageCallback);
	server2.Start();

	evpp::http::Service http_server(&loop);
	http_server.RegisterDefaultHandler(HttpRequestCallback);
	http_server.Listen(8000);

	evpp::http::Server http_server2(4);
	http_server2.RegisterDefaultHandler(HttpRequestCallback);
	http_server2.Init("8080,9000");
	http_server2.Start();

	loop.Run();

redfox1999 avatar Nov 05 '18 06:11 redfox1999