【BDS-IHG&FBプロジェクト学習-01】--nginx webSocket逆エージェント構成
34581 ワード
3つの問題を解決 1.nginx単純にドメイン名のエージェントをする場合の構成の解決策 2.websocketにおけるjavaクラスが注入に依存できない解決策 3.nginxドメイン名マッピングがwebsocketにおけるurlの構成に及ぼす影響問題の解決方法 nginx構成 jsコード javaコード 1.nginx単純にドメイン名のエージェントを作る場合の構成の解決方法
2.websocketにおけるjavaクラスが注入に依存できない解決策
3.nginxドメイン名マッピングがwebsocketにおけるurlの構成に与える影響問題の解決方法
nginx構成
jsコード
JAvaコード
2.websocketにおけるjavaクラスが注入に依存できない解決策
3.nginxドメイン名マッピングがwebsocketにおけるurlの構成に与える影響問題の解決方法
nginx構成
http{
include mime.types;
default_type application/octet-stream;
// websocket
//-------websocket ----------
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
//-------websocket -------
upstream web_pools {
server 127.0.0.1:8888;//
}
server {
listen 80;
server_name ihg-tools.bds-analytics.com;//
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.3.52:8888;// ip, localhost cookie
}
// websocket
//-------websocket ----------
location /websocket {
proxy_pass http://192.168.3.52:8888;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Origin "";
}
//-------websocket ----------
}
}
jsコード
var socket;
$(function () {
if(typeof(WebSocket) == "undefined") {
layerMsg(" "," WebSocket");
}else{
// layerMsg(" "," WebSocket");
// http://211.152.47.79:8888/websocket
// , http://www.websocket-test.com/
socket = new WebSocket("ws://ihg-tools.bds-analytics.com/websocket");
//
socket.onopen = function() {
send2service();//
window.setInterval("send2service()",1000*120);//120
};
//
socket.onmessage = function(msg) {
layerMsg(" ",msg.data)
//
};
//
socket.onclose = function() {
console.log("Socket ");
};
//
socket.onerror = function() {
layerMsg(" ","Socket , ");
//
}
}
});
function send2service() {
socket.send("hi,i am jack!");
}
JAvaコード
package com.bds.ihgfb.util;
import cn.hutool.log.Log;
import cn.hutool.log.LogFactory;
import com.bds.ihgfb.model.StatusBean;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.entity.Entity;
import org.nutz.dao.impl.NutDao;
import org.nutz.dao.impl.SimpleDataSource;
import org.nutz.dao.sql.Sql;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* className:WebSocketServer
* discription:
* author:luRuiHua
* createTime:2019-07-08 17:06
*/
@ServerEndpoint("/websocket")
@Component
public class WebSocketServer {
static Log log= LogFactory.get(WebSocketServer.class);
// websocket --- -------------------------
// , service
private static NutDao dao;
// , service
@Autowired
@Qualifier("xiaohongshu")
public void setDao(NutDao dao){
WebSocketServer.dao = dao;
}
// websocket --- -------------------------
// , 。 。
private static int onlineCount = 0;
//concurrent Set, MyWebSocket 。
private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();
// ,
private Session session;
/**
* */
@OnOpen
public void onOpen(Session session) {
this.session = session;
webSocketSet.add(this); // set
addOnlineCount(); // 1
log.info(" " + getOnlineCount());
}
/**
*
*/
@OnClose
public void onClose() {
webSocketSet.remove(this); // set
subOnlineCount(); // 1
log.info(" ! " + getOnlineCount());
}
/**
*
*
* @param message */
@OnMessage
public void onMessage(String message, Session session) {
log.info(" :"+session+"-----"+message);
String s = checkXhsFail();
//
for (WebSocketServer item : webSocketSet) {
try {
if ("fail".equals(s)){
sendMessage(" , ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
*
* @param session
* @param error
*/
@OnError
public void onError(Session session, Throwable error) {
log.error(" ");
error.printStackTrace();
}
/**
*
*/
public void sendMessage(String message) throws IOException {
this.session.getBasicRemote().sendText(message);
}
public static synchronized int getOnlineCount() {
return onlineCount;
}
public static synchronized void addOnlineCount() {
WebSocketServer.onlineCount++;
}
public static synchronized void subOnlineCount() {
WebSocketServer.onlineCount--;
}
public String checkXhsFail(){
System.out.println("********************* *******************");
// Dao dao = getDao();
// sql
Sql sql = Sqls.create("select count(0) as count,status from t_note_simple_task group by status");
//
sql.setCallback(Sqls.callback.entities());
Entity<StatusBean> entity = dao.getEntity(StatusBean.class);
sql.setEntity(entity);
// sql
dao.execute(sql);
//
List<StatusBean> list = sql.getList(StatusBean.class);
int count = 0;
for (int i =0;i<list.size();i++){
StatusBean statusBean = list.get(i);
int status = statusBean.getStatus();
if (status==4){
count = statusBean.getCount();
}
}
if (count>=1){
System.out.println("》》 《《");
return "fail";// 4,
}else {
return "suc";
}
}
}