socket.io的一个很好的作用就是它的实时传输,在聊天方面起到了很大的作用。下面我就和大家分享一下socket.io的使用方法。
首先你要有一个nodejs环境,然后用npm装一个express项目框架。在项目node项目里面用npm装一下socket.io:
npm install --save socket.io;
var http = require('http').Server(app) var io = require('socket.io')(http)
这时候,如果前端有数据通过socket.emit传过来数据之后,socket.on就可以接收到数据,下面我们来写前端如何传输数据。
首先在<script>标签里引入后端传过来的socket。
<script src="http://192.168.1.00:3000/socket.io/socket.io.js"></script> <script> var socket = io(http://192.168.1.00:3000); socket.on('starmap',function(data){ console.log(data) })
</script>
里面的ip是你自己启动的后端服务。这时你的前端就可以用socket了。
然后转到后端,我们要把前端html的路由引导后端路由中。
首先在app.set()下面添加一条:
app.use("/",express.static('public')); app.get('/', function(req, res){ res.redirect('/index.html'); });//这段代码要在app.use()后面,要注意顺序。 //这段的意思就是在进服务器的主页的时候,它自动跳转到public里面前端的页面, 这样就是可以实现前后端分离。
然后接收前端的socket:
io.on('connection', function (socket) { socket.emit('starmap', gTestData()); });//emit中有两个参数,第一个是和前端对应的,互相对应传输数据的名字。第二个是传输的数据
之后添加一条socket的端口:
http.listen(3000);
这里我就要和大家分享一下我碰到的问题。之前我说过了,这是在一个项目框架里面搭建的socket,所以就会出现一个问题:项目是自带端口的,所以你如果在设置socket端口时就会冲突。这时你可以把项目www文件夹下面的bin文件里面设置端口的方法注释或者删掉就ok了。