安装websocket出现如下问题

webpack和webpack-cli均为最新版本
webpack和webpack-cli均为最新版本

1个回答

用npm重新安装下webpack cli/test

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
webSocket报错问题如下,怎么解决呢?
严重: No error handling configured for [com.leimingtech.admin.module.anon.server.ChatSocket] and the following error occurred java.io.IOException: java.util.concurrent.ExecutionException: java.net.SocketException: Software caused connection abort: socket write error at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:286) at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:572) at org.apache.tomcat.websocket.WsSession.onClose(WsSession.java:495) at org.apache.tomcat.websocket.WsFrameBase.processDataControl(WsFrameBase.java:348) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:290) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:131) at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:67) at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:204) at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:203) at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:93) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:635) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.util.concurrent.ExecutionException: java.net.SocketException: Software caused connection abort: socket write error at org.apache.tomcat.websocket.FutureToSendHandler.get(FutureToSendHandler.java:120) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:281) ... 15 more Caused by: java.net.SocketException: Software caused connection abort: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) at java.net.SocketOutputStream.write(SocketOutputStream.java:159) at org.apache.coyote.http11.upgrade.BioServletOutputStream.doWrite(BioServletOutputStream.java:38) at org.apache.coyote.http11.upgrade.AbstractServletOutputStream.writeInternal(AbstractServletOutputStream.java:153) at org.apache.coyote.http11.upgrade.AbstractServletOutputStream.write(AbstractServletOutputStream.java:121) at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.onWritePossible(WsRemoteEndpointImplServer.java:94) at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:81) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:456) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessage(WsRemoteEndpointImplBase.java:344) at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.startMessageBlock(WsRemoteEndpointImplBase.java:276) ... 15 more
spring websocket报如下错误,请问是什么问题?
``` 7-May-2017 22:13:18.552 严重 [http-nio-8080-exec-3] org.springframework.web.socket.sockjs.transport.session.WebSocketServerSockJsSession.handleMessage Broken data received. Terminating WebSocket connection abruptly java.lang.IllegalStateException: A SockJsMessageCodec is required but not available: Add Jackson to the classpath, or configure a custom SockJsMessageCodec. at org.springframework.util.Assert.state(Assert.java:70) at org.springframework.web.socket.sockjs.transport.TransportHandlingSockJsService.getMessageCodec(TransportHandlingSockJsService.java:134) at org.springframework.web.socket.sockjs.transport.session.WebSocketServerSockJsSession.handleMessage(WebSocketServerSockJsSession.java:186) at org.springframework.web.socket.sockjs.transport.handler.SockJsWebSocketHandler.handleTextMessage(SockJsWebSocketHandler.java:92) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:110) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:42) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:81) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:78) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:389) at org.apache.tomcat.websocket.server.WsFrameServer.sendMessageText(WsFrameServer.java:110) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:489) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:288) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:127) at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:73) at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1368) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) ```
关于使用autobahn实现websocket开发出现的问题
为了在android上实现websocket,我才用了autobahn这个第三方库函数,其中在使用ws的时候完全没有问题,但是实现wss总是出现如下的错误,这是什么原因呢?![图片说明](https://img-ask.csdn.net/upload/201603/09/1457503980_476370.png) 其中由于我是用的是自签名的证书,我将autobahn中的WebSocketConnection里面进行了如下修改:![图片说明](https://img-ask.csdn.net/upload/201603/09/1457504108_909722.png)
使用tomcat8写了个webSocket聊天室,出现如下异常
![图片说明](https://img-ask.csdn.net/upload/201703/02/1488426025_623561.png) 如图,在本地运行无异常,上传至阿里云服务器后开始时无异常,等待一段时间(推测是session timeout后)出现如图异常 package com.project.webSocket; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpSession; import javax.websocket.EndpointConfig; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import org.json.JSONException; import org.json.JSONObject; import org.springframework.web.context.support.WebApplicationContextUtils; import com.project.service.Manager; import com.project.service.impl.ManagerImpl; import com.project.utils.GetHttpSessionConfigurator; //@ServerEndpoint注解表示将 WebSocket服务端运行在 以ws://开头的访问端点 @ServerEndpoint(value = "/SocketServer",configurator = GetHttpSessionConfigurator.class) public class SocketServer{ private static final long serialVersionUID = 1L; //将httpSession,socketSession放在一个map里,代表一个用户 private static final HashMap<HttpSession,SocketServer> onlineUsers = new HashMap<HttpSession,SocketServer>(); private static int onlineCount = 0; //定义客服人员的名字(对应cookie--user_id) private static String customerService1 = "A002"; private static String customerService2 = "A003"; private HttpSession httpSession; /** * WebSocket Session */ private Session session; //使用 ServerEndpoint 注释的类必须有一个公共的无参数构造函数 public SocketServer() { } /** * 打开连接 * * @param session */ @OnOpen public void onOpen(Session session,EndpointConfig config) { this.session = session; this.httpSession = (HttpSession)config.getUserProperties().get(HttpSession.class.getName()); httpSession.setMaxInactiveInterval(60000); if(httpSession.getAttribute("user") != null){ onlineUsers.put(httpSession, this); } addOnlineCount(); System.out.println("++++当前人数" + onlineUsers.size()); System.out.println(httpSession.getAttribute("user")); } /** * 关闭连接 */ @OnClose public void onClose() { onlineUsers.remove(httpSession,this);//从map中删除 subOnlineCount(); System.out.println("----当前人数" + onlineUsers.size()); } /** * 错误信息响应 * * @param throwable */ @OnError public void onError(Throwable throwable) { System.out.println("连接异常"); System.out.println(throwable.getMessage()); } 请问是什么问题造成的?
python Socket模拟WebSocket接收数据问题
按照WebSocket协议对数据进行解析,解析出来的数据不正确,还是乱码,求大神指导问题出在哪,代码如下: ``` def decode(self,data): if not len(data): return False length = data[1] & 0x7F if length == 0x7E: mask = data[4:8] raw = data[8:] elif length == 0x7F: mask = data[10:14] raw = data[14:] else: mask = data[2:6] raw = data[6:] ret = bytes() for cnt, d in enumerate(raw): ret += bytes((d ^ mask[cnt % 4],)) return ret ``` 抓包工具看到的原始数据为: ``` c1 a8 c8 6f 51 b8 62 39 1e f6 e4 3f e6 ea ff db 65 8a 60 5f 65 08 f8 bf 66 e8 1f 3e 7e f5 01 23 50 b2 92 75 75 9f d2 4a 4a e3 60 b8 53 b8 ``` 实际发送的数据为: ``` {'cap':'1920x1080/0','udid':'90ca2c38'} ``` 调试看到的数据如下图: ![图片说明](https://img-ask.csdn.net/upload/201801/16/1516092073_44289.png)
关于webSocket发生异常的求助
使用webSocket发生如下异常,请问这个什么原因?如何可以解决 2019-11-13 09:10:58.048 ERROR 1 --- [http-nio-8080-exec-6] o.a.t.websocket.pojo.PojoEndpointBase : No error handling configured for [com.websocket.WebSocket] and the following error occurred java.io.EOFException: null at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1289) at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1223) at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72) at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
javaweb在web.xml中配置欢迎页面为websocket服务访问地址,无法直接通过访问项目根路径来访问websocket
如题,在web.xml中配置欢迎页面为websocket服务访问地址,无法直接通过访问项目根路径来访问websocket服务(访问路径为:ws://127.0.0.1:8080/项目名/),而访问路径后面加websocket服务url是可以访问的。 请教一下大神,是我的配置存在问题,还是访问websocket本身不支持通过欢迎页面访问(web服务器用的tomcat),如果是不支持的话,请问,通过什么方式能做到“通过访问项目根路径来访问websocket服务”,主要是为了达到通过ip和端口就能直接访问websocket服务,web.xml和websocket类内容如下: **_web.xml文件:_** ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>TestWeb</display-name> <servlet> <servlet-name>testAction</servlet-name> <servlet-class>com.ch.TestAction</servlet-class> </servlet> <servlet-mapping> <servlet-name>testAction</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>ws</welcome-file> </welcome-file-list> </web-app> ``` **_websocket服务类:_** ``` @ServerEndpoint("/ws") public class WebSocketServer { private Session session; //存储用户名和server的对应关系 // private static Set<WebSocketServer> users = new HashSet<WebSocketServer>(); //监听建立连接 @OnOpen public void open(Session session){ this.session=session; System.out.println(getDatetime(new Date()) + " 客户端已连接"); } //监听连接关闭 @OnClose public void close(Session session){ //关闭websocket System.out.println(getDatetime(new Date()) + " 客户端断开连接"); } //监听用户发送的消息并向每个客户端推送消息 @OnMessage public void sendMessage(String message){ System.out.println(getDatetime(new Date()) + " 客户端发送消息:" + message); } @OnError public void onError(Session session, Throwable error) { System.out.println(getDatetime(new Date()) + " 客户端出错"); error.printStackTrace(); } } ```
学习JavaEE中,使用WebSocket的问题
最近刚刚学习了JSP/Servlet的知识,书上有讲WebSocket的技术,自己想实现一下,但总是有问题,如下图: ![图片说明](https://img-ask.csdn.net/upload/201506/27/1435370312_457982.png) 源代码如下:<br/> ``` /*页面脚本*/ <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>使用WebSocket通信</title> <script type="text/javascript"> var webSocket=new WebSocket("ws://127.0.0.1:8080/WebSocket/websocket/chat"); var sendMsg=function() { var inputElement=document.getElementById('msg'); //发送信息 webSocket.send(inputElement.value); //清空单行文本框 inputElement.value=""; }; var send=function(event) { if(event.keyCode==13) { sendMsg(); } }; webSocket.onopen = funcntion() { alert("hello webSocket!"); //为onmessage事件绑定监听器,接收消息 webSocket.onmessage = function(event) { var show = document.getElementById('show'); //接收并显示消息 show.innerHTML+= event.data + "<br/>"; show.scrollTop = show.scrollHeight; } document.getElementById('msg').onkeydown = send; document.getElementById('sendBn').onclick = sendMsg; }; webSocket.onclose = function() { document.getElementById('msg').onkeydown = null; document.getElementById('sendBn').onclick = null; Console.log('WebSocket已经关闭。'); }; </script> </head> <body> <div style="width:600px; height:240px; overflow-y:auto;border:1px solid #333;" id="show"></div> <input type="text" size="80" id="msg" name="msg" placeholder="输入聊天内容"/> <input type="button" value="发送" id="sendBn" name="sendBn"/> </body> </html> ``` ``` //实现的Java类 package com.xlf; import java.io.IOException; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.atomic.AtomicInteger; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; @ServerEndpoint(value = "/websocket/chat") public class ChatEntpoint { private static final String GUEST_PREFIX = "访客"; private static final AtomicInteger connectionIds = new AtomicInteger(0); // 定义一个集合,用于保存所有接入的WebSocket客户端 private static final Set<ChatEntpoint> clientSet = new CopyOnWriteArraySet<ChatEntpoint>(); private final String nickname; private Session session; public ChatEntpoint() { nickname = GUEST_PREFIX + connectionIds.getAndIncrement(); } // 当客户端连接进来时自动激发该方法 @OnOpen public void start(Session session) { this.session = session; clientSet.add(this); String message = String.format("[%s %s]", nickname, "加入了聊天室!"); broadcast(message); } // 当客户端断开连接时自动激发该方法 @OnClose public void end() { clientSet.remove(this); String message = String.format("[%s %s]", nickname, "离开了聊天室!"); broadcast(message); } // 每当收到客户端消息时自动激发该方法 @OnMessage public void incoming(String message) { String filterMessage = String .format("%s %s", nickname, filter(message)); broadcast(filterMessage); } public static void broadcast(String msg) { for (ChatEntpoint client : clientSet) { try { synchronized (client) { //发送消息 client.session.getBasicRemote().sendText(msg); } } catch (IOException e) { System.out.println("聊天错误,向客户端 "+client+" 发送消息出现错误。"); clientSet.remove(client); try { client.session.close(); } catch (IOException e1) {} String message=String.format("[%s %s]", client.nickname,"已经被断开了"); broadcast(message); } } } public static String filter(String message){ if(message==null) return null; char content[]=new char[message.length()]; message.getChars(0, message.length(), content, 0); StringBuilder result=new StringBuilder(content.length+50); for (int i = 0; i < content.length; i++) { switch (content[i]) { case '<': result.append("&lt;"); break; case '>': result.append("&gt;"); break; case '&': result.append("&amp;"); break; case '"': result.append("&quot;"); break; default: result.append(content[i]); break; } } return (result.toString()); } } ``` 新人,希望有大神指教!
HTML5 websocket的headr如何加入扩展参数
HTML5 websocket的headr如何加入扩展参数:如下: websocket = new WebSocket("ws://192.168.152.73:8099"); WebSocket {} binaryType: "blob" bufferedAmount: 0 extensions: "" onclose: null onerror: null onmessage: null onopen: null protocol: "" readyState: 1 url: "ws://192.168.152.73:8099/" __proto__: WebSocket
django➕dwebsocket➕nginx报错301怎么解决?
最近在做网站的站内消息,使用的django➕dwebsocket➕nginx 但是在上到服务器的时候,访问建立连接的函数,报错301永久重定向了,我nginx也配置了。但是就是连接不上。 ``` nginx配置如下 server { listen 80 default_server; listen [::]:80 default_server; server_name _; # gzip config gzip on; gzip_min_length 1k; gzip_comp_level 9; gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; gzip_vary on; gzip_disable "MSIE [1-6]\."; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location /api { rewrite ^/api/(.*)$ /$1 break; proxy_pass http://39.97.166.114:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 60; proxy_read_timeout 600; proxy_send_timeout 600; } ``` ``` 后台代码 clients = [] @accept_websocket def echo(request): if request.is_websocket: try: clients.append(request.websocket) print(clients) for message in request.websocket: print(message) me = eval(message) # 将字符串类型的消息转换为字典型 print(type(me)) print(me["name"]) me['id']=1 me['username']=2 print(me) # print(request.websocket.count_messages()) if not message: break for client in clients: # print(client.count_messages()) print(client) # print(client.has_messages()) client.send(message) finally: clients.remove(request.websocket) ``` ``` 前端代码 <!DOCTYPE html> <html> <head> <title>django-websocket</title> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script type="text/javascript">//<![CDATA[ $(function () { //创建WebSocket对象获得连接 $('#connect_websocket').click(function () { if(window.websocket){ window.websocket.close() } var websocket = new WebSocket("ws://saas111.com/api/user/echo"); websocket.onopen = function () { console.log('WebSocket open'); }; websocket.onmessage = function (responseData) { console.log('message: ' + responseData.data);//浏览器控制台打印返回的数据 var jsondata = eval('(' + responseData.data + ')'); //将返回的数据转换为json对象 $('#messagecontainer').prepend('<p>' + jsondata.name + '</p>'); //展示数据 }; window.websocket = websocket; }); //发送消息 $('#send_message').click(function () { if(!window.websocket){ alert("Please connect server."); }else{ {# window.s.send($('#message').val());#} //发送字符串数据类型 window.websocket.send(JSON.stringify({"name":$('#message').val()}));//发送json数据类型 } }); //关闭websocket连接 $('#close_websocket').click(function () { if(window.websocket){ window.websocket.close(); } }); }); //]]></script> </head> <body> <br> <input type="text" id="message" value="Hello, World!" /> <button type="button" id="connect_websocket">连接websocket</button> <button type="button" id="send_message">发送消息</button> <button type="button" id="close_websocket">关闭websocket</button> <h1>接收消息</h1> <div id="messagecontainer"> </div> </body> </html> ```
springboot websocket 400错误
本地运行websocket得时候 报400错误 springboot框架 代码如下: 后台配置: ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570686723_607003.jpg) ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570686763_895856.jpg) ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570686812_725115.jpg) 前台调用: ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570686865_776057.jpg) 错误显示: ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570686916_573220.jpg) 一开始我以为是因为传参引起得 把参数去掉也不行 不知道是因为什么情况导致得问题 跪求指点
有关tomcat7下用到websocket时报错的问题
我现在用eclipse+tomcat7时,用websocket时报错了,报错如下,请问是什么原因,该怎么解决呢??![图片说明](https://img-ask.csdn.net/upload/201708/29/1504001172_771133.png)
django websocket 聊天功能 用nginx代理 访问失败
django 项目 用dwebsocket 实现简单的聊天功能 本地调试已经成功 发布到服务器用nginx做代理, 链接失败 firefox 报错信息: ``` Firefox 无法建立到 ws://xxxxxx/ 服务器的连接。 ``` chrome 报错信息: ``` WebSocket connection to 'ws://xxxxxxx/' failed: Error during WebSocket handshake: Unexpected response code: 400 ``` nginx 配置如下: ``` server { server_name xxxxxxxxxxxxx; listen 80; location /static { root /var/fixpdq; } location /media { root /var/fixpdq; } location / { proxy_pass http://127.0.0.1:8100; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Connection "upgrade"; } } ``` django view 代码如下(多余代码省略了) ``` @require_websocket def chat(request): if request.is_websocket(): print('握手成功') .... ``` 本地调试用127.0.0.1 访问是没问题的, 但在本机用局域网ip访问, 就不通, 发布到服务器, 用nginx做代理, 也是不通, 确定的是前端请求已经到达后台代码了. 我想可能是nginx配置的问题 或者是请求到达服务器nginx之前已然就不是socket请求了(因为本机用局域网ip访问也不通), 但是试过很多方法了, 在view 里request.is_websocket() 这句代码是false, nginx转发后居然不是socket请求了, 那肯定就是nginx的配置问题了, 不应该是django 的问题, 求大神帮帮忙!!!
关于SpringBoot集成WebSocket后使用stomp发送消息对应路径未能成功接收到消息
自己尝试着搭建Springboot聊天室的项目,后台websocket配置如下 ``` @Configuration @EnableWebSocketMessageBroker //允许stomp协议 public class WebSocketConfig implements WebSocketMessageBrokerConfigurer{ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/stomp") //添加STOMP协议的端点。// 这个URL是供WebSocket客户端或SockJS客户端连接服务端访问的地址。 .setAllowedOrigins("*").addInterceptors(new HttpSessionHandshakeInterceptor()). //添加允许跨域访问 withSockJS(); //指定端点使用SockJS协议 } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/topic,/queue") //服务器推送给客户端的前缀 .enableSimpleBroker("/app"); //客户端发送给服务端的前缀 } } ``` 消息接收类的代码如下 ``` @Controller public class MessageController { @MessageMapping("/test") @SendTo("/topic/hhh") public String sendMessage(Map<String,Object> map){ return "miao"; } } ``` 理论上前台应该发送消息到/api/test时Controller类应该能接收到消息,但是发送消息后未能进入controller类 html就不贴了,js前端代码如下 ``` window.onload=function(){ var sockJs=new SockJS("/stomp"); var stomp=Stomp.over(sockJs); stomp.connect({},function (frame) { console.log(frame); stomp.subscribe("/topic/hhh",function (data) { console.log(data) }); }) document.getElementById("sendMesssage").onclick=function () { console.log(stomp.connected); var message=document.getElementById("talkMessage"); stomp.send("/app/test",{},JSON.stringify({"message":message})); } } ``` 连接完成时frame的控制台日志打印如下 Frame {command: "CONNECTED", headers: {…}, body: ""} body: "" command: "CONNECTED" headers: heart-beat: "0,0" version: "1.1" __proto__: Object __proto__: Object send时并没有断开连接,为啥发送不到对应地址?
websocket 通讯 A server must not mask any frames that it sends to the client.
主要用C开发服务器端(websocket):握手,拆包都正常,但发送给浏览器的老是自动断开,一开始以为是粘包问题,结果最后用最简单是例子(只处理握手和发包,接的包不处理)也是如此, unsigned char frame[] = {0x81,0x01,0x68}; // h send(connfd, frame, strlen(frame),0); 这个数据帧够简单了吧?(握手,读取浏览器的帧正常) 但结果确实这样: A server must not mask any frames that it sends to the client. 但当我换成PHP时却一切正常,主要代码如下功能和上面的一样: $data = pack('H*', implode('',array('81', '01', '68'))); socket_send($conn, $data, strlen($data), 0); 使用sokit模拟客户端收到的包内容一模一样,如下: 12:45:07 DAT---> <3> ..h [81 01 68] 无语了。。。。,
同一个websocket连接发送多条指令之后onmessage如何区分各条指令返回的数据
#### 如下所示,在vue中我共用一个websocket连接,一次发送多条指令,那么,此时onmessage会得到四个返回的结果集,如何去区分这四个结果集对应的是哪条指令呢,求解惑~ ``` ws.send(JSON.stringify(this.$Command.subscribe)) ws.send(JSON.stringify(this.$Command.mode)) ws.send(JSON.stringify(this.$Command.basicstatus)) ws.send(JSON.stringify(this.$Command.groupstatus)) ws.send(JSON.stringify(this.$Command.detailedStatus)) ```
websocket httpsession return null
我在做spring mvc+websocket时遇到session为null的问题。 ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462784616_157633.jpg) 我在登录的controller里记录了session ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462784683_952487.jpg) 我查到网上有一个解释是httpsession创建早于websocket, ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462784797_681397.jpg) 具体的链接是http://stackoverflow.com/questions/20240591/websocket-httpsession-returns-null。 我不知道如何保证ServletRequestListener早于WebSocket?或者利用其它方式可以解决? 我的一些配置如下: WebsocketEndPoint ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462784938_20263.jpg) spring.xml ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462785045_930020.jpg) ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462785057_619415.jpg) jsp ![图片说明](https://img-ask.csdn.net/upload/201605/09/1462785072_885923.jpg)
websocket连接失败,进不了函数on_open和on_message
websocket连接大概如下,但是运行程序时,函数on_open、on_message都没有被执行,完全没有进入?想问下是什么情况?感谢大佬告知!!!急!!! ``` def SendWebSocket: class __init__(self, file,url): self.file = self.rul = def on_message(self, ws, message): print('message') def on_open(self,ws): prnit('open') def on_error(self,ws,error): print('error') def main(self): ws = websocket.WebSocketApp(self.url, on_message=self.on_message, on_error=self.on_error) ws.on_open = self.on_open ws.run_forever() if __name__ == '__main__': sws = SendWebSocket(file, url) sws.main() ```
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
程序员,职场上请远离这种人!
对有些职场人来讲,甩锅就是一种生存手段。01.从大学打篮球说起上大学的时候喜欢打篮球,然后我又特别喜欢抢篮板,经常是跳起来的时候没事,落下来的时候偶尔会踩到别人的脚上,于...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
一个读研让我损失了一百万的真实故事
关注我!只要10分钟,包你学会数据分析 毕业后,应该就业还是考研? 我刚出国留学那会儿,就惊讶的发现,外国local95%都不会选择读研 他们说,硕士学费很贵,时间宝贵,老板不认,所以很费 当几乎所有人都是本科学历时,硕士学历反而像个异类 在老板眼里,三年硕士远远不如3年的工作经验实用 他们甚至专门为拒绝高学历者发明了一个词,叫overoccupie...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
杭漂程序员2019的心路历程,还不起助学贷款,交不起房租,披荆斩棘终雨过天晴
一个杭漂2019的心酸历程,一路披荆斩棘终于还是雨过天晴。
我采访了同事,让他掏出了每天都会浏览的干货网站
前言只有光头才能变强。文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y在周六的晚上,我日常去到公司写文章。想写...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
相关热词 c#如何定义数组列表 c#倒序读取txt文件 java代码生成c# c# tcp发送数据 c#解决时间格式带星期 c#类似hashmap c#设置istbox的值 c#获取多线程返回值 c# 包含数字 枚举 c# timespan
立即提问