`
田进丰
  • 浏览: 33735 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

socket.io实时传输数据

 
阅读更多

   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了。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics