可以利用nginx的反向代理,直接去转发web socket,这里所监听的端口是不一样的;
先看html的内容:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>我是来测试的</title>
</head>
<body>
<h1>我是来测试的11111111111</h1>
<script type="text/javascript">
//连接服务
// var wsServer = 'wss://api.99img.cn:9501';
var wsServer = 'wss://149.28.16.XXX:9503';
//实例化
var websocket = new WebSocket(wsServer);
//监听开启事件(只负责监听,没有实际的开启作用)
websocket.onopen = function (evt) {
websocket.send('我是来搞事的!!!');
// console.log("连接成功html");
};
//消息
websocket.onmessage = function (evt) {
//监听消息后,直接给服务器传递消息
console.log('evt: ' + evt);
console.log('来自server的最新消息: ' + evt.data);
if (evt.data != '') {
alert('我他妈的:'+evt.data);
}
};
//关闭事件
websocket.onclose = function (evt) {
console.log("我关闭了html");
};
//报错
websocket.onerror = function (evt, e) {
console.log('Error occured: ' + evt.data);
};
</script>
</body>
</html>
我在这里访问的是'wss://149.28.16.XXX:9503',其中9503是访问的接口,而不是真正实现socket的接口,我用的是swoole,监听的端口是9501;
具体的代码实现我就不写了,有兴趣的盆友可以看我之前写过的文章,里面详细记录了swoole的实现,这里主要是介绍nginx的配置,以及转发;
server {
listen 9503;
# server_name 149.28.16.212;
location / {
proxy_pass http://149.28.16.XXX:9501;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
ssl on;
ssl_certificate /www/server/nginx/ssl_key/jesonc.crt;
ssl_certificate_key /www/server/nginx/ssl_key/jesonc.key;
}