其实socket.io我博客没开通以前就已经使用了,主要是工作的时候我们这边有一个需求需要实时发送数据。我就想着自己能不能也写一个出来。然后有了写聊天室的想法。正好上一年到了年底要回老家需要一个本地架起一个视频网站到老家看电影
就顺便再系统上加入了弹幕实时聊天。今年正好又碰上阿里云促销就一次性买了3年的服务器。至于怎么搭服务器这篇就不写了,过段时间有时间再写。好了不扯淡了。
一、服务端
1、加载socket.io模块。
const socketio=require("socket.io"),
var server = http.Server(app.callback()); var io = socketio(server); server.listen(80);
2、使用io进行连接
io.on("connection",(socket) => {
socket.on("sendGroupMsg", function (data) { socket.broadcast.emit("receiveGroupMsg", data); });
socket.on("online", name => { socket.broadcast.emit("online", name) }); });
二、客户端
客户端就很简单了。
下面是官网的例子
<script src="/socket.io/socket.io.js"></script> <script>
var socket = io("http://localhost");
socket.on("news", function (data) { console.log(data); socket.emit("my other event", { my: "data" }); });
</script>
不过客户端的坑却是最多的。首先你有可能会碰见一个问题就是
模块你根本找不到,io是未定义。所以首先你要清楚你是开发环境,而官网例子是生产环境不一样的。
所以我改成下面这种就好了。
<script src="http://localhost/socket.io/socket.io.js"></script>
<script> var socket = io.connect("http://localhost"); </script>
端口根据你的需要可以调整。剩下的就是业务逻辑了。
三、谈一下socket.io这个东西
socket.io根据官网的介绍是说可以兼容到ie5.5。第一次我看见感觉真的恐怖。后面看了一下他的运行机制。发现他是使用了优雅降级来处理的。如果你的浏览器不支持socket对象那么就变成了ajax长轮训。
下面就列一下参考外链吧,(毕竟可以提升SEO排名,过段时间在写一遍文章讲一下怎么提升SEO排名)
1、socket.io官网:https://socket.io/
2、https://segmentfault.com/a/1190000012494156