背景:
1、服务端语言为GO,客户端语言为:C#(WinForm);
2、在客户端操执行长耗时任务时,服务器应该将后台日志或定时将心跳信息及时传递给客户端,这样方便用户查看服务器执行情况(重要)。
一、C#核心代码(启动的是订阅服务端)
using Hprose.RPC;
using Hprose.RPC.Plugins.Log;
using Hprose.RPC.Plugins.Push;
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace win_push_msg_client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 测试ToolStripMenuItem\_Click(object sender, EventArgs e)
{
callAppendLog("开始");
Task.Factory.StartNew(() =>
{
try
{
#region
// 服务端启动
//string addrStr = "127.0.0.1";//要其它机器访问,则不能用本机
string addrStr = "192.168.17.101";
IPAddress iPAddress = Dns.GetHostAddresses(addrStr)\[0\];
TcpListener server = new TcpListener(iPAddress, 8888);
server.Start();
var service = new Broker(new Service()).Service;
ServiceCodec.Instance.Debug = true;
service.Use(Log.IOHandler)
.Use(Log.InvokeHandler)
.Bind(server);
// 启动订阅服务
var client = new Client(string.Format("tcp4://{0}:8888", addrStr));
var prosumer = new Prosumer(client, "C#");
prosumer.OnSubscribe += (topic) => {
this.callAppendLog(topic + " 订阅成功.");
};
prosumer.OnUnsubscribe += (topic) => {
this.callAppendLog(topic + " 取消订阅成功");
};
prosumer.Subscribe<string>("log\_msg", (data) => {
this.callAppendLog(data);
});
this.callAppendLog("已订阅主题:log\_msg");
#endregion
}
catch (Exception ex)
{
this.callAppendLog(ex.Message);
}
});
}
private void callAppendLog(string msg)
{
this.Invoke(new Action(() => {
this.richTextBox1.AppendText(msg);
this.richTextBox1.AppendText("\\n");
}));
}
}
}
二、GO核心代码:
package main
import (
"github.com/hprose/hprose-golang/v3/rpc"
"github.com/hprose/hprose-golang/v3/rpc/plugins/push"
"time"
)
func main() {
//client2 := rpc.NewClient("tcp4://127.0.0.1:8888/")
client2 := rpc.NewClient("tcp4://192.168.17.101:8888/")
prosumer2 := push.NewProsumer(client2, "发送方1")
time.Sleep(time.Millisecond * 100)
prosumer2.Push("人来了1a", "log_msg", "C#")
prosumer2.Push("人来了2c", "log_msg", "C#")
}
/*
https://github.com/hprose/hprose-golang/blob/v3/rpc/rpc_test.go#L768
包:github.com/hprose/hprose-golang/v3
*/
手机扫一扫
移动阅读更方便
你可能感兴趣的文章