this.websocket = new WebSocket("ws://url_websocket_server")
this.websocket.onopen = function (evt) {
console.log("已连接websocket服务器");
}
var _this = this
this.websocket.onmessage = function (evt) {
var data = JSON.parse(evt.data)
console.log(data)
}
this.websocket.onclose = function (evt) {
console.log("websocket close");
}
发布评论
评论(5)
可以建立
websocket
连接实现长连接原则上是可以的。
可以使用 swoole 开启 websocket 功能。 websocket 出现的其中一个原因就是为了解决 ajax 轮询的空耗资源以及不及时性而出现的。
使用 websocket 后,不论是客户端还是服务器端有新消息都可以实时互相发送。不仅及时,同时可以避免空轮询。
但是 ajax 轮询也不是没有可取之处,比如说不需要即时获取消息的:如每隔一分钟查看一下是否有新公告。公告本身不需要即时获取的,同时公告本身也比较多的情况下。
还有就是本身就是打算要轮询的,比如每个5分钟发一个请求,目的就是保持当前用户在线状态的。
同时还有个比较致命的问题就是 websocket 相对于 ajax 轮询来说比较复杂。ajax 本身是建立在普通 http 请求上的,属于半双工操作,即客户端有些主动权,即我想获取信息时(事件触发)我就发个请求即可,然后在同一个进程里我继续等待服务器返回数据并做相应处理即可。但是 websocket 属于全双工操作,即客户端和服务器是对等的,服务器随时都有可能发消息给客户端,客户端也有可能随时发消息给服务端,程序思维不在是线性的了。需要重新架构你的程序。
js:socket.io 监听端口就行啦~
有问题,可以私信我~
前端使用原生的websocket请求即可,给你看个例子:
Swoole 可以通过 swoole_websocket_server 类来进行 WebSocket 协议开发。前端可以使用 js 原生的 WebSocket 进行连接,但是 js 原生的 WebSocket 最低要求 IE10,IE10之前的版本只能通过 Flash 来进行 WebSocket 连接。