使用socket.io和nodejs搭建websocket服务器端
socket.io不仅可以搭建客户端的websocket服务,而且支持nodejs服务器端的websocket。
下面让我来介绍一下怎么安装配置nodejs.
进入http://nodejs.org/#download下载msi文件。一直点next安装。最后文件会自动安装在C:\\nodejs目录下。
安装完成后,会自动配置环境环境变量。如果没有自动配置,自己手动在path处加上 ;C:\\nodejs\\。
安装完成后,需要配置npm来管理node.js的模块。
在window下安装npm需要安装git。
安装完git后,打开gitbush。执行下面几步:
git config --system http.sslcainfo /bin/curl-ca-bundle.crt git clone --recursive git://github.com/isaacs/npm.git cd npm node cli.js install npm -gf
第一个是设置不会有任何提示,第二步会到github上下载npm会有下载文件和进度,第四步是安装npm到node.js会复制几个文件cmd文件和mode_modules文件夹到nodejs目录。
这样就配置好了npm。
如果需要安装什么模块直接输入npm install ***。
没有npm的或者windows用户可以使用github下载socket.io并且放入到node_modules文件夹中,具体配置可以参考文章:《nodejs教程:配置nodejs.exe的windows目录结构》
nodejs安装socket.io
使用node插件管理包,运行下面的命令就可以安装成功socket.io
npm install socket.io
用socket.io 实现的一个例子
客户端代码:
<html>
<head>
<title></title>
<script src=\"../js/socket.io.client.js\"></script>
<script type=\"text/javascript\">
function doit() {
var socket = io.connect(\'http://localhost\');
socket.on(\'news\', function (data) {//接收到服务器发送过来的名为\'new\'的数据
console.log(data.hello);//data为应服务器发送过来的数据。
socket.emit(\'my new event\', { my:\'new data\' });//向服务器发送数据,实现双向数据传输
});
socket.on(\'other\', function (data) {//接收另一个名为\'other\'数据,
console.log(data.hello);
socket.emit(\'event1\', { my:\'other data\' });
});
}
</script>
</head>
<body>
<button id=\'btn\' onclick=\"doit()\">click me</button>
</body>
</html>
socket.io.client.js可以https://github.com/LearnBoost/socket.io-client下载到本地,在<script src=\"..\">指向本机的js库。
服务器用nodejs实现
server2.js
var http= require(\'http\'), io= require(\'socket.io\'), express= require(\'express\');
var app = express.createServer(), io = io.listen(app);
app.listen(80);
io.sockets.on(\'connection\', function (socket) {
socket.emit(\'news\', { hello: \'world\' });//监听,一旦客户端连接上,即发送数据,第一个参数\'new\'为数据名,第二个参数既为数据
socket.on(\'my other event\', function (data) {//捕获客户端发送名为\'my other event\'的数据
console.log(data.my);
});
socket.emit(\'other\', { hello: \'other world\' });//发送另一个数据
socket.on(\'evnet1\', function (data) {//捕获另外一个数据
console.log(data.my);
});
});
测试结果,客户端可正常显示
服务器端显示结果:
C:\\java\\Nodejs>node server2.js
注:代码要和npm_module在同一个目录下。不然会出现找不到socket.io module的错误。
本文地址:https://www.stayed.cn/item/16459
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我