在lori的帮助下,总算完成了一个websocket服务的运行。大致了解了nodejs下web服务的真实面孔,虽然一知半解,但也算是颇有收获,现将过程总结如下:
环境: node版本v0.4.12,需要有websocket-server和antinode
代码是从网上下载的例字(lori提供),具体是一个画图的客户端,效果是一个客户端画图时,其余连上服务器的客户端都能看到画图的效果;第二个是聊天室,服务器把收到的其中一个客户端的消息发送给其它客户端。
先说一下我对antinode的认识:antinode功能类似于tomcat,apache等web服务器。安装antinode成功后进入antinode文件夹下面可以看到一个setting-sample.json文件,里面指定了web服务的端口和文件目录,内容格式如下:
"port" : 8081,
"hosts" : {
"www.linuxidc.com" : {
"root" : "/home/test"
},
"www.linuxidc.net" : {
"root" : "/home/test"
}
},
"default_host" : {
"root" : "/mycode/nodejs",
"sunny": "/mycode/nodejs/sunny"
}
}
其中port指定web访问服务的端口;“default_host”指定web服务的目录。antinode文件夹下还有另外一个文件就是server.js,如果配置好setting-sample.json文件,就可以在linux下运行node server.js命令,就可以在指定端口访问部署的web服务。
我的代码都是放在/mycode/nodejs文件下面的,剩下的就是要开启web服务的服务端,比如画图的服务端的文件名为draw_server.js,要开启这个服务就用命令node draw.server就可以了,draw的客户端文件是draw_net_client.html,我们可以直接在浏览器中输入:8081/draw_net_client.html这个地址就能打开服务端的html网页,然后就可以测试预期的效果了。同样可以开启聊天室的服务端可客户端。
我再运行的过程中遇到一个问题就是,我再局域网内无法访问linux的服务,只能在linux本机访问,经过分析发现是linux的防火墙的问题,所以就需要在linux的防火墙里面开启8081等测试需要的端口。这个linux的命令是:
/sbin/iptables -I INPUT -p tcp --dport 8081 -j ACCEPT //这行名令是修改iptables信息开放8081端口
/etc/rc.d/init.d/iptables save // 这行命令保存修改的信息
service iptables restart //重新启动iptables使修改生效
这样我发现用node运行一个类似聊天室的web服务就要占用两个端口,一个是部署web服务文件需要的端口,我们可以通过这个端口访问开放的web服务中的文件;另个端口是聊天的服务端占用的,用于监听客户端发来的信息。