苍梧听雨

苍梧听雨 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

苍梧听雨 提出了问题 · 10月22日

nginx配置socket.io,spring boot+vue前后端分离项目

云服务器中部署了一个项目,但是其中有一个socket.io需要持续发送,但是打开【检查-网络】查看的时候,连接都是fail掉的(fali,400,502等)
image.png
在spring boot的后台,打印出的消息是这样子的
image.png

nginx.conf的配置如下,上面的请求发送到nginx监听的80端口,根据socket.io匹配到8300的端口,应该没有问题吧
image.png

Spring boot启动类中,(config.setHostname("localhost")里面localhost是否不用改成公网IP呢?nginx会代理)

private static Logger logger = LoggerFactory.getLogger(UserRealm.class);

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(MindTogetherApplication.class);
        application.setBannerMode(Banner.Mode.OFF);
        application.run(args);

        //scoket-io监听
        Configuration config = new Configuration();
        config.setHostname("localhost");
//        config.setHostname("公网IP");
        config.setPort(8300);
        //最大帧
        config.setMaxFramePayloadLength(1024 * 1024);
        config.setMaxHttpContentLength(1024 * 1024);

        final SocketIOServer server = new SocketIOServer(config);
        System.out.println("SocketIOServer Listening");
        
        server.addEventListener("report", SocketData.class, new DataListener<SocketData>() {
            @Override
            public void onData(SocketIOClient client, SocketData clientData, AckRequest ackRequest) {
                String sessionId =clientData.getSessionId();
                String password = clientData.getPassword();
                String data = clientData.getData();//后续需要后台验证id与密码的正确性

                clientData.setPassword("");//密码信息进行隐藏
                server.getBroadcastOperations().sendEvent("receive/"+sessionId,clientData);
            }
        });
        
        server.addEventListener("synchroToServer", SocketData.class, new DataListener<SocketData>() {
            @Override
            public void onData(SocketIOClient client, SocketData clientData, AckRequest ackRequest) {
                String sessionId =clientData.getSessionId();
                // logger.info("SocketIOServer 同步请求 SessionId:"+clientData.getSessionId());
                //排除发送者自己在前端验证
                server.getBroadcastOperations().sendEvent("synchroFromServer/"+sessionId,"");
            }
        });
        server.start();
        try {
            Thread.sleep(Integer.MAX_VALUE);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        server.stop();
    }

关注 2 回答 1

苍梧听雨 提出了问题 · 10月19日

vue在本地正常运行,部署到服务器端口错误

之前在服务器上部署了spring boot的后端,用本地的VUE项目链接服务器的后端,是可以登录的
但是用公网IP访问云上的项目就会向下图一样报错405
image.png


打开浏览器的【检查-网络】发现请求如下,xxx指代公网IP
http://xxx.xxx.xxx.xxx/login/auth?username=admin&password=123456
是不能够返回结果的。
但是如果把请求改成8080端口,如下,就可以正常返回结果
http://xxx.xxx.xxx.xxx:8080/login/auth?username=admin&password=123456
image.png

但是使用本地,npm run dev启动的项目,就可以直接访问,下图是本地VUE+云上spring boot的登录情况,可以登录
image.png


应该是端口设置的问题吧?但是在哪里改呢?
conf/index.js 内容如下

var path = require('path')
module.exports = {
  build: {
    env: require('./prod.env'),
    index: path.resolve(__dirname, '../dist/index.html'),
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: './',
    productionSourceMap: true,
    // Gzip off by default as many popular static hosts such as
 // Surge or Netlify already gzip all static assets for you. // Before setting to `true`, make sure to: // npm install --save-dev compression-webpack-plugin productionGzip: false,
    productionGzipExtensions: ['js', 'css'],
    // Run the build command with an extra argument to
 // View the bundle analyzer report after build finishes: // `npm run build --report` // Set to `true` or `false` to always turn it on or off bundleAnalyzerReport: process.env.npm_config_report
 },
  dev: {
    env: require('./dev.env'),
     host: 'localhost',
    //host: '公网IP',
 //port: 9520 port: 8080,
    autoOpenBrowser: true,
    autoOpenPage: '/login',
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
   
 proxyTable: {
        '/api': {
          // target: 'http://localhost:8080',
          target: 'http://公网IP:8080',
          pathRewrite: {
            '^/api': '/'
 }
        }
      },
   
 }
}

更新:服务器是华为云,在安全组中已经放行了8080,使用本地VUE项目http://localhost:8080/api/login/auth?username=admin&password=123456
是可以直接返回的。
问题是对8080端口的请求才会有正确的返回值,但是VUE项目部署在服务器上,是运行在HTTP的80端口上的,那要怎么样的修改才可以通过8080发送请求呀

关注 2 回答 1

苍梧听雨 赞了回答 · 10月19日

服务器spring boot项目突然连接不上,状态码400

小老弟 你又出什么幺蛾子了?
400 bad request 一般是请求有问题

关注 2 回答 1

苍梧听雨 提出了问题 · 10月18日

服务器spring boot项目突然连接不上,状态码400

本来是正常的,不知道自己怎么改了一下。现在java -jar xxx.jar启动了项目之后,在浏览器输入【公网IP:8080】,就找不到页面
image.png



使用telnet 公网IP 8080常识连接,返回的结果是这个样子的
image.png

返回出来的HTML页面打开是这个样子的
image.png

关注 2 回答 1

苍梧听雨 提出了问题 · 10月18日

解决spring boot项目打包成jar,本地可以运行,服务器就不行

java -jar xxxx.jar命令,在本地启动打包好的jar,在浏览器输入“localhost:8080”,可以正常的访问项目

但是上传到服务器上后,使用java -jar xxxx.jar启动项目,打开浏览器输入 “公网IP:8080”,就无法访问
image.png

安全组的出入方向,都已放开8080端口
image.png
服务器上的spring boot项目也是正常运行的
image.png

2020年10月18日15:19:33更新
根据楼下回答的大神,使用查看端口的命令,得到如下结果
image.png
但是我在安全组里面已经开发了8080端口,见上图。还需要做其他什么操作吗

关注 2 回答 1

苍梧听雨 赞了回答 · 10月11日

解决HTML使用超链接定位到本页面的某一个元素时,被top-bar挡住,如何设置位置

可以在 <h2 id='t1'>Title1</h2> 里面加一个用于定位的隐形元素,设置一下偏移

关注 1 回答 1

苍梧听雨 提出了问题 · 10月11日

解决HTML使用超链接定位到本页面的某一个元素时,被top-bar挡住,如何设置位置

<h2 id='t1'>Title1</h2>
<!--省略代码若干-->
<a class="txt" href="#t1">定位到Title1</a>

点击这个超链接的的时候,会把title1,定位到页面最顶部。但是页面上本来有一个顶部栏,就不把Title1挡住显示不出来。

所以,有没有什么办法让Title1定位到页面顶部稍微偏下一点点呢?

(页面使用了bootstrap框架)

关注 1 回答 1

苍梧听雨 提出了问题 · 9月1日

网上下载的bootstrap模板,是否可以用到比赛中?或者是商用

http://www.bootstrapmb.com/

就是在这个网站上下载的模板,但是我联系不上客服,询问不了。
下载的模板里面也没有Readme和其他东西,找不到原作者的联系方式。

打算把这个模板修改后用到自己的比赛里面去,不知道是否会侵权。

关注 1 回答 0

苍梧听雨 提出了问题 · 6月18日

python3 socket编程传不了大文件,while循环无故终止

下面是一个发送文件的函数,传输参数是文件名和socket
生成一个压缩包,完成压缩包的发送之后再将生成的压缩包删掉。
在发送一些小的文件(几十kb)的时候是正常的,如下图
image.png



退出while循环时会判断条件为false(正常)
但是在发送2MB以上的文件,就会这样
image.png
还没发送完,条件依然是true的时候,就跳出了
且后面的

print("总共发送了%s个字节" % send_size)
print("Send:文件发送成功")

都没有执行。
为什么在条件还是true的时候,就突然跳出去了呢?

    def file_send(self, conn, filename):
        true_name = filename
        filepath = self.host_path_list[filename]  
        # filepath相当于一个URL 

        if filename.find('.') != -1:
            filename = filename[0:filename.find('.')] + ".zip"
        else:
            filename = filename + ".zip"

        z = zipfile.ZipFile(filename, 'w')
        # 新建一个zip对象

        if os.path.isdir(filepath):
            # 如果查询的是子文件夹 就把里面所有的东西压缩进filename.zip
            for d in os.listdir(filepath):
                z.write(filepath + os.sep + d, d)
        else:
            # 找到是文件 只用压一个就行了
            z.write(filepath, true_name)
        z.close()

        # 将头部信息封装成json 再编码成bytes
        header_dic = {
            'filename': filename,
            'file_size': z.infolist()[0].file_size
        }
        header_json = json.dumps(header_dic)
        header_bytes = header_json.encode('utf-8')

        # 打包文件头
        # 把header的长度封装成元组
        conn.send(struct.pack('i', len(header_bytes)))

        # 发送头
        conn.send(header_bytes)

        total_size = z.infolist()[0].file_size

        # 发送数据
        with open(filename, 'rb+') as f:
            send_size = 0
            while send_size <= total_size:
                data = f.read(1024)
                conn.send(data)
                send_size += len(data)
                print("已发送了:%s字节+ %s" % (send_size,(send_size <= total_size)))
            print("总共发送了%s个字节" % send_size)
            print("Send:文件发送成功")
        while True:
            # 用于删除之前生成的压缩包
            try:
                os.remove(filename)
                break
            except:
                continue

关注 1 回答 0

苍梧听雨 提出了问题 · 5月17日

Eclipse+Tomcat误删项目,重新导入404

  • 项目的代码没有问题,已经运行过
  • 误删之后,将备份在另一个盘的拷贝过来
  • 现在启动之后使下图这个样子的

图片说明

  

关于错误,我也发现了一个问题,本来应该把library.xml文件导入
  
D:Program Filesapache-tomcat-9.0.34confCatalinalocalhost
 
但是每次复制进去,run了之后都找不到,从新打开那个文件夹,又空了,这可能是问题的关键之一
 

图片说明

关注 1 回答 0

认证与成就

  • 获得 0 次点赞
  • 获得 4 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 4 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 4月6日
个人主页被 324 人浏览