c#SocketIO4NetClient访问node js
提到Node,不能错过的是WebSocket协议。它与Node之间的配合堪称完美,其理由有两条。
1.WebSocket客户端基于时间的编程模型与Node中自定义事件相差无几。
2.WebSocket实现了客户端与服务端之间的长连接,而Node事件驱动的方式十分擅长与大量客户端保持高并发连接。
----《深入浅出Nodejs》
参考资料
在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(, 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的更多相关文章
- Node.js~在linux上的部署~外网不能访问node.js网站的解决方法
这是上一篇node.js部署到linux上的后续文章,当我们安装完node.js之后,建立了sailsjs的网站,然后在外面电脑上无法访问这个网站,这个问题我们如何去解决? 解决思路: 查看linux ...
- Mac中安装node.js和npm
换了Mac需要安装noed.js和npm记录一下首先访问node.js官网(https://nodejs.org/en/download/) 点击下载完后,一路点安装 就安装完成了 然后打开-终端-输 ...
- 在Sublime Text 3 中安装SublimeLinter,Node.js进行JS&CSS代码校验
转载自:http://www.wiibil.com/website/sublimelinter-jshint-csslint.html 在Sublime Text中安装SublimeLinter,No ...
- 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0
大家好,Node.JS 4.0 发布了,这个流行的服务器端 JS 平台合并了 Node.js 和 io.js 的代码,4.0 版就是这两个项目结合的产物——现在合并为一个代码库.这次最主要的变化是 N ...
- Node.js 初探
概念 Node.js 是构建在Chrome javascript runtime之上的平台,能够很容易的构建快速的,可伸缩性的网络应用程序.Node.js使用事件驱动,非阻塞I/O 模式,这使它能够更 ...
- node.js安装和启动
在Windows上安装 Node.js十分方便,我们只需要访问node.js官网http://www.nodejs.org/,点击Download链接,然后选择Windows Installer(32 ...
- Node.js~在linux上的部署~pm2管理工具的使用
之前写了两篇关于在linux上部署nodejs的文章,大家如果没有基础可以先看前两篇<Node.js~在linux上的部署>,<Node.js~在linux上的部署~外网不能访问no ...
- 编写原生Node.js模块
导语:当Javascript的性能需要优化,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...
- 编写原生的Node.js模块
导语:当Javascript的性能遭遇瓶颈,或者需要增强Javascript能力的时候,就需要依赖native模块来实现了. 应用场景 日常工作中,我们经常需要将原生的Node.js模块做为依赖并在项 ...
随机推荐
- 软件测试学习日志————round 1 some questions of two small programs
Below are four faulty programs. Each includes a test case that results in failure. Answer the follow ...
- C#控件、窗体置顶
//控件置于顶层和底层 panel.BringToFront();//置于顶层 panel.SendToBack();//置于底层 //窗体置顶 TopMost = true;
- 走进C标准库(7)——"string.h"中函数的实现memcmp,memcpy,memmove,memset
我的memcmp: int memcmp(void *buf1, void *buf2, unsigned int count){ int reval; while(count && ...
- sqlite3编译与查询
1.sqlite3 http://www.sqlite.org/ 下载 wget http://www.sqlite.org/2014/sqlite-amalgamation-3080403.zip ...
- [Drools]JAVA规则引擎 -- Drools
Drools是一个基于Java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效. 本文所使用的de ...
- DRP总结
DRP终于结束了,战线有点长了.记得刚开始听说DRP的时候,感觉这个名词很专业,再加上视频一共有300集,顿时感觉这是一个大项目,很正规.很专业的项目.虽然后来知道DRP知识ERP的一个分支,项目规模 ...
- hdu5461 Largest Point(沈阳网赛)
Largest Point Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- Objective-C内存管理教程和原理剖析(四)
初学Objective-C的朋友都有一个困惑,总觉得对Objective-C的内存管理机制琢磨不透,程 序经常内存泄漏或莫名其妙的崩溃.我在这里总结了自己对Objective-C内存管理机制的研究成果 ...
- English - 定冠词和不定冠词(a an the) 的区别
不定冠词表示泛指,定冠词表示特指. 不定冠词a (an)与数词one 同源,是"一个"的意思.a用于辅音音素前,一般读作[e],而an则用于元音音素前,一般读做[en]. 1) 表 ...
- NOPI导出Excel 自定义列名
NOPI 做Excel 导出确实很方便 ,但是一直在用没好好研究. 在网上没找到自定义Columns的方法 ,于是乎自己就在原来的方法上简单地改改. 想用的童鞋们可以直接拿去用! /// 数据大于65 ...