码迷,mamicode.com
首页 > Windows程序 > 详细

c#SocketIO4NetClient访问node js

时间:2016-08-14 12:57:20      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:

提到Node,不能错过的是WebSocket协议。它与Node之间的配合堪称完美,其理由有两条。

1.WebSocket客户端基于时间的编程模型与Node中自定义事件相差无几。

2.WebSocket实现了客户端与服务端之间的长连接,而Node事件驱动的方式十分擅长与大量客户端保持高并发连接。

----《深入浅出Nodejs》

参考资料

GIT nodejs-socketio-chat

GIT socket.io

SocketIO4NetClient

在Node的学习过程中,最使我感兴趣的就是socket.io模块,在git上也有不少大牛做的node之间的访问模块,觉得大体上相差不多,有的区别在于使用方法和舒适度上,但经过node中很多知名模块的配合下,代码的整洁度已经让习惯顺序逻辑编程的人觉得很舒服,而且在适当的时候 根据自己的意愿使用并行,这种逻辑带来的快感 ,有时,是让开发者很爽的一件事。

再说会用vs连接node服务端时,使用socket.io模块就稍稍有些吃力,研究了两天,在网上找到SocketIO4NetClient。编译后是dll文件,在项目中可直接引用,在unity客户端里 放在项目根目录下就会自动解析,但在unity发布到不同的平台时,会出现一些问题,解决方法是将项目源码导入到unity项目中,经过unity编译后可以发布到各平台运行。

socket.io

node服务端

$npm install socket.io -g 

首先在命令行安装socket.io模块,如在项目中使用时报错“not found module socket.io”,则要在项目目录下执行$npm install socket.io,在项目根目录生成的 node_modules 里面会添加socket.io模块,并成功引用。

var app = require(express)();
var http = require(http).Server(app);
var io = require(socket.io)(http);

app.get(/, function (req, res) {
    res.end(welcome to socket demo );
});

http.listen(3000, function () {
    console.log(server localhost:3000 is start);
});

为了便于配置,这里使用了express框架,提示找不到模块的 可以像安装socket.io模块方式,安装express。

代码中在访问根目录时候,会返回字符串 welcome to socket demo ,node将监听3000端口。

io.on(connection, function (socket) {
    socket.on(message, function (obj) {
        io.emit(message,obj);
    });
});

以上代码可以理解为,在服务端接收名称为 connection 访问时,在socket中 监听message事件,将传入的obj参数,推送给客户端。

c#客户端

技术分享

首先将源码中的dll文件添加到项目引用中

{
Client socket = new Client("http://localhost:3000"); socket.Opened += clien_Opened; socket.Message += clien_Message; socket.SocketConnectionClosed += clien_SocketConnectionClosed; socket.Error += clien_Error;

socket.On("connection", (fn) =>
{
Console.WriteLine("connect enevt start");

socket.Emit("messgae", reJson);
});


 socket.Connect();
}

void clien_Error(object sender, ErrorEventArgs e)
{
Console.WriteLine("a error show"+e.Message);
}

void clien_SocketConnectionClosed(object sender, EventArgs e)
{
Console.WriteLine("socket connection succeed!");
}

void clien_Message(object sender, MessageEventArgs e)
{
if (e != null && e.Message.Event == "message")
{

}
}

void clien_Opened(object sender, EventArgs e)
{
Console.WriteLine("socket was open...");
}

 

c#SocketIO4NetClient访问node js

标签:

原文地址:http://www.cnblogs.com/z-yue/p/5769778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!