手机浏览器websocket,无法连接一直error
  var websocket = null;
    if ('WebSocket' in window) {
        websocket = new WebSocket("ws://localhost:8080/springws/websocket/socketServer.do");
    } else if ('MozWebSocket' in window) {
        websocket = new MozWebSocket("ws://localhost:8080/springws/websocket/socketServer.do");
    } else {
        websocket = new SockJS("http://localhost:8080/springws/sockjs/socketServer.do");
    }
    websocket.onopen = onOpen;
    websocket.onmessage = onMessage;
    websocket.onerror = onError;
    websocket.onclose = onClose;

一直是监听到error,请问有了解的吗。
电脑端浏览器是正常的,手机浏览器检测有WebSocket

4个回答

localhost: 8080是本地还回地址, 你的websocket的服务是开在你的pc端的,然后你用手机连接,这个localhost就是指手机,你手机并没有开websocket服务
所以一直是error因为你的服务都木有。

你试着把服务部署到外网 然后连接地址通过外网地址连接

或者你用手机连上电脑开的wifi然后配置代理 然后手机可以访问你的pc端上面,然后访问地址localhost改为你电脑的ip地址

把localhost换成电脑ip试试

cyy298
cyy298 恩 发现了谢谢
大约一年之前 回复

onerror连接发生错误的回调方法,onopen成功建立连接的回调,onclose连接关闭的回调,onmessage接收到消息的回调。
localhost是变量吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求助!websocket连接后端一直不返回连接成功

前端 let wsuri= global.wsURL+"/slims/v1/websocket/"; if ("WebSocket" in window) { console.log("您的浏览器支持查看在线人数") } else { alert('当前浏览器不支持查看人员在线状态'); } this.websockt = new WebSocket(wsuri); this.websockt.onmessage = this.websocketonmessage; this.websockt.onerror = this.websocketonerror; this.websockt.onclose = this.websocketclose; this.websockt.onopen =this.websocketonopen; // Web Socket 已连接上,使用 send() 方法发送数据s console.log('数据发送中...') this.websockt.send('Holle') console.log('数据发送完成') } this.websockt.send = this.websocketsend; }, websocketonopen(){ //连接建立之后执行send方法发送数据 console.log("xxxx"); }, websocketonerror(){//连接建立失败重连 console.log("重新连接") this.initWebSocket(); }, websocketonmessage(e){ //数据接收 console.log("数据接收") }, websocketsend(Data){//数据发送 console.log("数据发送"); this.websockt .send("幸福9999");debugger alert(8888); }, websocketclose(e){//关闭连接 console.log("关闭连接") this.websockt.onclose(); }, }, 后台 : @OnOpen public void onOpen(Session session, EndpointConfig sce) throws IOException { this.session = session; //Object转换成Long Long uuid = Long.valueOf(String.valueOf(sce.getUserProperties().get("uuid"))); if (null == uuid) { onClose(); } webSocketSet.add(this); //线程安全的原子数+1 subOnlineCount(); System.out.println("有链接加入,当前人数为:" + getOnline_num()); this.session.getAsyncRemote().sendText("有链接加入,当前人数为:" + getOnline_num()); map.put(session, uuid); System.out.println("当前登录人uid" + uuid); String stats = "0"; //是首次登陆的人 if (0 == userSocketService.list(Condition.create().eq("uid", uuid)).size()) { UserSocket usersocket = new UserSocket(); usersocket.setUid(uuid); usersocket.setStats(stats); usersocket.setCompany_id(0L); userSocketService.saves(usersocket); } else { UserSocket usersocket = new UserSocket(); usersocket.setUid(uuid); usersocket.setStats("0"); userSocketService.update(usersocket, Condition.create().eq("uid", uuid)); } sendMessage("------------------------后台-----) 可以连接上,但是没法发消息,正常这里应该显示状态码是101的,但是一直显示在链接中明明后台已经收到请求了,到底是怎么回事呢? ![图片说明](https://img-ask.csdn.net/upload/201810/17/1539757022_269768.png)

浏览器链接websocket失败

用php写的websocket后台 socket accept函数已经成功接受到请求 可是前端调用了onerror函数 firefox浏览器报无法连接到ws:localhost……的错误 就是后台运行很正常 打开前端想试一试 就出错了 感觉是浏览器的问题 网上找了都没用

Websocket无法连接但不能抛出异常

<div class="post-text" itemprop="text"> <p>Trying to create a connection with websocket in JS to PHP server, can't connect to the server but no exception thrown</p> <p><strong>JS</strong></p> <pre><code>try { var socket; var host = "ws://www.somecoolsite.com:9080/test.php"; var socket = new WebSocket(host); console.log("opening socket..."); socket.onopen = function () { console.log('Socket Status: ' + socket.readyState + ' (open)'); socket.send("2"); console.log("sent first package"); } socket.onconsole.log = function (msg) { console.log('Received: ' + msg.data); } socket.onclose = function () { console.log('Socket Status: ' + socket.readyState + ' (Closed)'); } } catch (exception) { console.log('Error' + exception); } </code></pre> <p><strong>PHP on somecoolsite</strong></p> <pre><code>$server = stream_socket_server("tcp://localhost:9080", $errno, $errorMessage); if ($server === false) { throw new UnexpectedValueException("Could not bind to socket: $errorMessage"); } else { echo "Working"; } for (;;) { $client = @stream_socket_accept($server); if ($client) { stream_copy_to_stream($client, $client); fclose($client); } } </code></pre> <p>I'm stuck with this entire day, can't establish socket connection. Anyone has an idea what can be the problem here?</p> </div>

Websocket在刷新时无法连接

<div class="post-text" itemprop="text"> <p>I have got a Websocket server using Ratchet/PHP:</p> <pre><code>&lt;?php require __DIR__.'/../vendor/autoload.php'; use Ratchet\Server\IoServer; use Ratchet\Http\HttpServer; use Ratchet\WebSocket\WsServer; use MyApp\Mediator; $server = IoServer::factory( new HttpServer( new WsServer( new Mediator() ) ), 9000 ); $server-&gt;run(); ?&gt; </code></pre> <p>Mediator class:</p> <pre><code>&lt;?php namespace MyApp; use Ratchet\MessageComponentInterface; use Ratchet\ConnectionInterface; class Mediator implements MessageComponentInterface { protected $clients = []; public function onOpen(ConnectionInterface $conn) { $this-&gt;clients[$conn-&gt;resourceId] = $conn; echo "New connection! ({$conn-&gt;resourceId}) "; } public function onMessage(ConnectionInterface $from, $msg) { echo "Incoming: $msg "; } public function onClose(ConnectionInterface $conn) { unset($this-&gt;clients[$conn-&gt;resourceId]); echo "Connection {$conn-&gt;resourceId} has disconnected "; } public function onError(ConnectionInterface $conn, \Exception $e) { echo "An error has occurred: {$e-&gt;getMessage()} "; $conn-&gt;close(); } } ?&gt; </code></pre> <p>Now on the client side, I have this basic JS code:</p> <pre><code>let ws = new WebSocket('wss://localhost:8443'); ws.addEventListener('open', () =&gt; { ws.send('Hello!'); }); ws.addEventListener('message', event =&gt; { alert(event.data); }); </code></pre> <p>It does work (I can send and receive messages), however here's the problem:</p> <p>When visiting the page for the first time, a connection with the websocket server is established and works fine. When I close the page, the connection is closed (as it should). However, when I refresh the page the connection is closed (on unloading the page, this is normal) but when the page is loaded again, no connection is made to the websocket server. I have to refresh <em>again</em> to make the script connect. This should not happen, right? I have no idea why this is happening, what's causing this. </p> </div>

IE11是否对websocket的连接个数有限制?

网上说是默认6个,修改注册表就好了,但是修改后没效啊。有谁遇到过这个问题,有好的解决方法还请多多指教,感激不尽 报Security Error错误

WebSocket建立连接时候发生404错误,不知道是路径还是其他什么错误

初学WebSocket,做了一个Demo,出现404错误。 WebSocket connection to 'ws://localhost:8088/chat/begin?uname=xiaoming' failed: Error during WebSocket handshake: Unexpected response code: 404 JS代码: ``` var chat={}; chat.socket=null; var uname="<%=request.getSession().getAttribute("uname")%>" function conn(){ connect("ws://localhost:8088/chat/begin?uname="+uname); } function connect(host){ if("WebSocket" in window){ chat.socket=new WebSocket(host); }else if("MoWebSocket" in window){ chat.socket=new MoWebSocket(host); }else{ console.log("当前浏览器不支持WebSocket"); return; } } ``` 后台终端代码: ``` @ServerEndpoint("/begin") public class ChatServer { @OnOpen public void start(Session session){ System.out.println(session.getQueryString()); } } ``` 使用的是eclipse开发,Web服务器使用Tomcat7,jdk版本是1.8。

通过消息关闭Websocket连接

<div class="post-text" itemprop="text"> <p>How is it possible to close a websocket connection and pass it a message / code?</p> <p>The docs only define <code>func (ws *Conn) Close() error</code> without any arguments</p> <p>I would like to receive the event from JavaScript like this:</p> <pre><code>websocket.onclose = function(event) { console.log(event); }; </code></pre> <p>I am using <a href="https://godoc.org/golang.org/x/net/websocket" rel="nofollow">golang.org/x/net/websocket</a></p> </div>

java websocket报错302

WebSocket connection to 'ws://127.0.0.1:3333/buguback/websocket' failed: Error during WebSocket handshake: Unexpected response code: 302

vue前端websocket连接不上springboot,报错Connection closed before receiving a handshake response

搞定了,我的代码写的基本没有问题,毕竟都是按着教程一步一步来的,主要问题在于,我的开发环境和教程不一致,我是前后端分离,请求8080即请求的前端项目,当然会超时然后建立连接失败。我查看了一下前后端各自的端口:前端8080,后端63000,然后把 ``` this.sock = new WebSocket("ws:localhost:8080/websocket");//建立连接 ``` 改成 ``` this.sock = new WebSocket("ws:localhost:63000/websocket");//建立连接 ``` 就可以了,换成后端的端口号。 --- 以下是原问题 --- 照着网上的教程写的例子,整合到自己的项目中。前端用vue写的,js里几乎和教程一模一样,主要问题在于 ``` this.sock = new WebSocket("ws:localhost:8080/websocket");//建立连接 ``` --- **创建的websocket内的方法都是null,如图:** ![图片说明](https://img-ask.csdn.net/upload/201909/24/1569293600_266157.png) --- **然后观察控制台内过了一段时间报错,提示:** ``` WebSocket connection to 'ws://localhost:8080/websocket' failed: Connection closed before receiving a handshake response ``` --- **控制台错误详情见图:** ![图片说明](https://img-ask.csdn.net/upload/201909/24/1569294057_247788.png) --- **前端代码:** ``` webSocket() { debugger; // 建立socket连接 if ('WebSocket' in window) {//判断当前浏览器是否支持webSocket // this.sock = new WebSocket("ws:localhost:8080/bootTest/websocket");//建立连接(带后端项目名) this.sock = new WebSocket("ws:localhost:8080/websocket");//建立连接(不带后端项目名) } else { alert('你的浏览器暂不支持websocket :('); } var sock = this.sock; console.log(sock); sock.onopen = function (e) {//成功建立连接 console.log(e); }; sock.onmessage = function (e) {//接收到消息 console.log(e) $(".message").append("<p><font color='red'>"+e.data+"</font>") }; sock.onerror = function (e) {//连接发生错误 console.log(e); }; sock.onclose = function (e) {//连接关闭 console.log(e); }; ////监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 window.onbeforeunload = function(){ websocket.close(); }; } ``` --- --- --- --- 后端代码: ``` import java.io.IOException; import java.util.concurrent.CopyOnWriteArraySet; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; import javax.websocket.*; import lombok.extern.slf4j.Slf4j; @Slf4j @ServerEndpoint("/websocket") public class WebSocketServer { //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。 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()); try { sendMessage("连接成功"); } catch (IOException e) { log.error("websocket IO异常"); } } // //连接打开时执行 // @OnOpen // public void onOpen(@PathParam("user") String user, Session session) { // currentUser = user; // System.out.println("Connected ... " + session.getId()); // } /** * 连接关闭调用的方法 */ @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("来自客户端的消息:" + message); //群发消息 for (WebSocketServer item : webSocketSet) { try { item.sendMessage(message); } 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 void sendInfo(String message) throws IOException { log.info(message); for (WebSocketServer item : webSocketSet) { try { item.sendMessage(message); } catch (IOException e) { continue; } } } public static synchronized int getOnlineCount() { return onlineCount; } public static synchronized void addOnlineCount() { WebSocketServer.onlineCount++; } public static synchronized void subOnlineCount() { WebSocketServer.onlineCount--; } } ```

webSocket客户端报302,不知道哪里写错了。

请看下面代码: ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!doctype html> <html> <head> <meta charset="UTF-8" content="text/html"> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>基于Java服务端消息主动推送技术</title> <style type="text/css"> *{ margin:0; padding:0; } body{ background:url("image/bg.jpg") no-repeat; background-size:cover; } .chatbox{ width:700px; height:500px; margin:100px auto; font-size:12px; font-family:"微软雅黑"; color:#666; } h1{ text-align:center; font-size:30px; color:green; text-shadow:5px 10px 10px #111; } .chatbox .c_info{ text-align:left; line-height:46px; } .inputText{ height:30px; border:0; outline:none; text-indent:1em; font-size:14px; font-family:"微软雅黑"; color:#61B52D; border: 1px solid #61B52D; } .btn{ width:80px; text-indent:0; background:#9AD02D; color:#fff; margin-left: 10px; } .chatbox .c_message{ width:97%; height:300px; overflow:auto; border:1px solid yellow; font-size:24px; color:#9DA791; padding-left:20px; box-shadow:2px 10px 10px #111; /* background: #EAF9BE; */ } .chatbox .c_send{ margin-top: 10px; } </style> </head> <body> <div class="chatbox"> <h1>基于Java服务端消息主动推送技术</h1> <div class="c_info"> 服务器地址:<input type="text" value="localhost:8080/webSocket" id="addr" class="inputText" style="width:350px"/> 用户名:<input type="text" value="Yinwq" id="userName" class="inputText"/> <input type="button" id="con" class="inputText btn" value="连接" /> </div> <div class="c_message"> </div> <div class="c_send"> <input type="text" id="sendText" class="inputText" style="width:592px" /> <input type="button" id="sendBtn" class="inputText btn" value="发送" /> </div> </div> </body> <!-- 引入jquery类库 --> <script type="text/javascript" src="js/jquery-1.11.2.min.js"></script> <script type="text/javascript"> var connected = false; var ws; $(function(){ $(".c_send").hide(); //1.判断浏览器是否支持webSocket if(window.WebSocket || window.MozWebSocket){ printMsg("您的浏览器支持WebSocket,您可以尝试连接到聊天服务器!" , "OK"); }else{ printMsg("您的浏览器不支持WebSocket,您可以换其他浏览器!" , "ERROR"); $("#con").attr("disabled","true"); } }) //打印信息 function printMsg(msg,msgType){ if(msgType == "OK"){ msg = "<span style='color:green'>"+msg+"</span>"; } if(msgType == "ERROR"){ msg = "<span style='color:red'>"+msg+"</span>" } $(".c_message").append(msg + "<br/>"); } //点击连接的时候触发事件 $("#con").click(function(){ if(connected){ //已连接 ws.send("["+$("#userName").val()+"]离开了聊天室"); connected = false; ws.close(); }else{//没有连接 printMsg("正在准备连接,请稍等!", ""); var url = "ws://"+ $("#addr").val(); if("WebSocket" in window){ //ws = new WebSocket(url); ws = new WebSocket('ws://localhost:8080/webSocket'); }else if ("MozWebSocket" in window) { ws = new MozWebSocket(url); } //连接成功后设置连接状态 connected = true; $("#con").val("断开"); //注册事件 ws.onopen = function(event){ openWs(event); }; ws.onmessage = function(event){ msgWs(event); }; ws.onclose = function(event){ closeWs(event); }; ws.onerror = function(event){ errorWs(event); }; } }); //打开socket function openWs(event){ printMsg("连接已建立...!", "OK"); //建立连接的时候 ws.send("["+$("#userName")+"]进入了聊天室"); $(".c_send").show(); }; //接收消息 function msgWs(event){ printMsg(evnet.data); }; //关闭连接 function closeWs(event){ $("#con").val("连接"); //隐藏发送div $(".c_send").hide(); }; //产生错误 function errorWs(event){ printMsg("与服务器连接错误.." , "ERROR"); }; //点击发送触发事件 $("#sendBtn").click(function(){ //获取发送内容 var text = $("#sendText").val(); ws.send($("#userName").val() + "说:" + text); $("#sendText").val("");//清空发送框 }); </script> </html> ``` 浏览器报错 ![图片说明](https://img-ask.csdn.net/upload/201601/11/1452477841_505407.png) ![图片说明](https://img-ask.csdn.net/upload/201601/11/1452477853_561170.png)

java web websocke无法连接

错误显示:Firefox 无法建立到 ws://localhost/Test/socket 服务器的连接。 用的IDEA。tomcat9,jdk1.8。 浏览器前端界面显示没有问题。问题在下面这一句。 ``` var socket = new WebSocket("ws://${pageContext.request.getServerName()}:${pageContext.request.getServerPort()}${pageContext.request.contextPath}/websocket"); ``` 后端,Service.java ``` @ServerEndpoint("/websocket") public class Service { public void OnOpen(Session session){ room.addElement(session); JSONObject obj = new JSONObject(); obj.put("nickname","机器人"); obj.put("date",df.format(new Date())); obj.put("isSelf", false); obj.put("content","你好"); session.getAsyncRemote().sendText(obj.toString()); LOGGER.info("Service start..."); } ...... } ``` 前端界面接收不到返回的数据。之前有一次火狐没有报错,但是也接受不到数据。

springMVC中使用websocket报错404

![图片说明](https://img-ask.csdn.net/upload/201612/01/1480567442_423163.png) ## 似乎是springmvc拦截了ws请求,怎么才能让springMVC不拦截WS呢 JS代码 ``` var websocket = null; //判断当前浏览器是否支持WebSocket if('WebSocket' in window){ websocket = new WebSocket("ws://localhost:8080/VM2.0/websocket"); } else{ alert('浏览器不支持websocket,请更换浏览器'); }; //连接发生错误的回调方法 websocket.onerror = function(){ console.log("websocket连接失败"); }; //连接成功建立的回调方法 websocket.onopen = function(event){ console.log("websocket连接成功"); }; ``` java代码 ``` //静态变量,用来记录当前在线连接数。应该把它设计成线程安全的。 private static int onlineCount = 0; //concurrent包的线程安全Set,用来存放每个客户端对应的MyWebSocket对象。若要实现服务端与单一客户端通信的话,可以使用Map来存放,其中Key可以为用户标识 private static CopyOnWriteArraySet<MySocket> webSocketSet = new CopyOnWriteArraySet<MySocket>(); //与某个客户端的连接会话,需要通过它来给客户端发送数据 private Session session; /** * 存储当前有效的session对象 */ private static Queue<Session> sessionSet = new ConcurrentLinkedQueue<Session>(); /** * 连接建立成功调用的方法 * @param session 可选的参数。session为与某个客户端的连接会话,需要通过它来给客户端发送数据 */ @OnOpen public void onOpen(Session currentSession){ if(sessionSet.contains(currentSession) == false){ sessionSet.add(currentSession); System.out.println("WebSocketTest.onOpen()================Add=" + sessionSet.size()); } System.out.println("Server say:Client connected"); } ```

Tomcat8部署WebSocket后Android客户端怎样实现

参考了http://blog.chenzuhuang.com/archive/28.html 的代码,成功利用Tomcat8搭建了JSR356标准的WebSocket服务器,HTML的客户端也成功实现了,但是我想写一个Android平台下的客户端,请问 ``` //判断当前浏览器是否支持WebSocket if('WebSocket' in window){ websocket = new WebSocket("ws://localhost:8080/MyWebSocket/websocket"); } else{ alert('Not support websocket') } //连接发生错误的回调方法 websocket.onerror = function(){ setMessageInnerHTML("error"); }; //连接成功建立的回调方法 websocket.onopen = function(event){ setMessageInnerHTML("open"); } //接收到消息的回调方法 websocket.onmessage = function(){ setMessageInnerHTML(event.data); } //连接关闭的回调方法 websocket.onclose = function(){ setMessageInnerHTML("close"); } //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。 window.onbeforeunload = function(){ websocket.close(); } //将消息显示在网页上 function setMessageInnerHTML(innerHTML){ document.getElementById('message').innerHTML += innerHTML + '<br/>'; } //关闭连接 function closeWebSocket(){ websocket.close(); } ``` 以上的这段代码用Java怎么写?

转到websocket jsonrpc浏览器连接关闭

<div class="post-text" itemprop="text"> <p>I have a WebSocket JSON-RPC server example that I want to use from a browser. When you access the URL "http:localhost:8080", the browser opens the WebSocket connection properly. But when the browser sends the WebSocket request, the server closes the WebSocket connection. I can't even see a trace of the RPC method being called on the server.</p> <p>However, calling the server from a Go client works perfectly.</p> <p><strong>server.go</strong></p> <pre class="lang-js prettyprint-override"><code>package main import ( "log" "net/http" "net/rpc" "net/rpc/jsonrpc" "github.com/gorilla/websocket" ) type Service struct{} func (t *Service) Echo(req *string, res *string) error { log.Printf("Service.Echo") *res = *req log.Printf("Service.Echo req:%s res:%s", *req, *res) return nil } var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func serveWS(w http.ResponseWriter, r *http.Request) { ws, err := upgrader.Upgrade(w, r, nil) defer ws.Close() if err != nil { log.Println(err) return } jsonrpc.ServeConn(ws.UnderlyingConn()) } func main() { rpc.Register(new(Service)) http.Handle("/", http.FileServer(http.Dir("web"))) http.HandleFunc("/ws", serveWS) http.ListenAndServe(":8080", nil) } </code></pre> <p><strong>web/index.html</strong></p> <pre class="lang-js prettyprint-override"><code>&lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;script type="text/javascript"&gt; var ws = new WebSocket("ws://localhost:8080/ws"); ws.onopen = function(ev){ alert("open"); } ws.onmessage = function(ev){ alert("message"); } ws.onclose = function(ev){ alert("close"); } function send() { msg = { method: "Service.Echo", params: "hello", id: 0 }; var s = JSON.stringify(msg); alert(s); ws.send(s); } &lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;button onclick='send()'&gt;Send&lt;/button&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p><strong>client.go</strong></p> <pre class="lang-js prettyprint-override"><code>package main import ( "log" "net/rpc/jsonrpc" "github.com/gorilla/websocket" ) func main() { ws, _, err := websocket.DefaultDialer.Dial("ws://localhost:8080/ws", nil) if err != nil { log.Fatal("dial:", err) } defer ws.Close() client := jsonrpc.NewClient(ws.UnderlyingConn()) req := "hello" var res string err = client.Call("Service.Echo", &amp;req, &amp;res) if err != nil { log.Fatal("Service.Echo error:", err) } log.Printf("Service.Echo: req:%s res:%s", req, res) } </code></pre> <p>Do you know what the problem could be?</p> <p>Thank you very much.</p> <p>Cheers</p> </div>

websocket-一Ping/Pong就出错

websocket客户端一发送ping/pong消息连接就关闭,服务端一发送ping消息客户端就执行onError函数。我客户端发送的方式为: ``` client.send(new byte[]{(byte)0x89, (byte)0x00});ping client.send(new byte[]{(byte)0x8A, (byte)0x00});pong ``` 服务端直接发送的spring中的PingMessage

在浏览器和本地应用程序之间进行通信-安全连接?

<div class="post-text" itemprop="text"> <p>Currently creating an application launcher and updater based on a web page. Knowing the limitations of browsers (security reasons), for my project I needed to have a local application to control the update and the creation of the OS process. </p> <p>While testing and researching for a good amount of time; Now I have a working local-app, <em>written in Go</em>, that can create a process and kill it from an <code>ajax</code> <strong><code>POST</code></strong> request. I prepared some code to show, how my current attempt looks like (nothing fancy) :</p> <h3>index.html</h3> <pre><code>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8" /&gt; &lt;title&gt;api_test&lt;/title&gt; &lt;script src="js/jquery-3.0.0.min.js"&gt;&lt;/script&gt; &lt;script src="js/script.js"&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;h2 id="statusText"&gt;&lt;/h2&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <h3>js/script.js</h3> <pre><code>$(document).ready(function(){ console.log("Hey! ;)"); tryConnection(); }); function tryConnection() { var statusReq = $.ajax({ method: "GET", url: "http://127.0.0.1:9091/api/test", dataType: "json" }); statusReq.fail(function(){ $('#statusText').text("Fail"); setTimeout(tryConnection, 5000); }); statusReq.done(function(json){ $('#statusText').text(json.status); console.log("Integer result: " + json.result); setTimeout(tryConnection, 10000); }); } </code></pre> <h3>Local application, app.go</h3> <pre><code>package main import ( "log" "net/http" "encoding/json" ) type APITest struct { Status string `json:"status"` Result int `json:"result,omitempty"` }; func testHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*"); TestValue := APITest{Status: "Works!", Result: 123}; json.NewEncoder(w).Encode(&amp;TestValue); } func main() { log.Println("Started!"); http.HandleFunc("/api/test", testHandler); err := http.ListenAndServe("127.0.0.1:9091", nil); if err != nil { log.Fatal("Error occured:", err); } } </code></pre> <p>Everything seems to be fine! <em>But..</em></p> <p>The only problem I currently can't figure out is, How can I actually add support for <code>https://</code> connections without the need to carry the compiled binary with a cert and key file? Because I want to implement this feature into a <code>https://</code> only website and mixing together <code>https</code> and <code>http</code> connections, results in a <code>blocked mixed content</code> error from browser security restrictions, which is understandable.</p> <p>Maybe there are some other ways to implement this kind of communication? (to be clear, for <code>WebSockets</code> a secure connection is needed too).</p> </div>

websocket心跳重连失败,回调了onOpen后立刻onClose

``` var urlHead = "http://127.0.0.1:8081";//请求接口url头部 var webSoketHead = "127.0.0.1:8081";//soket链接ip+端口号+项目名称 var userId=loginAccount.accountId; var webSoketUrl = "ws://" + webSoketHead + "/LLWS/"+userId; var socket = null; // 判断当前浏览器是否支持WebSocket if ('WebSocket' in window) { socket = new WebSocket(webSoketUrl); } else { alert('该浏览器不支持本系统即时通讯功能,推荐使用谷歌或火狐浏览器!'); } var id = setInterval(function(){ console.log("心跳连接"); var heartMessage={ "to":{ "id":userId, "type":"heartContent" } } try{ if(socket.readyState != 3){ socket.send(JSON.stringify(heartMessage)); //发送消息倒Socket服务 }else{ heartContent(); init(); socket.send(JSON.stringify(heartMessage)); } }catch(err){ console.log(err); setTimeout(function(){ socket.send(JSON.stringify(heartMessage)); }, 5000); } }, 30000) function heartContent(){ // socket.close(); socket = new WebSocket(webSoketUrl); } function init(){ layui.use('layim', function(layim){ // 连接发生错误的回调方法 socket.onerror = function(res) { console.log("llws连接失败!"); // heartContent(); // init(); }; // 连接成功建立的回调方法 socket.onopen = function(event) { console.log("llws连接成功!"); } // 接收到消息的回调方法 socket.onmessage = function(res) { // console.log("llws收到消息啦:" +res.data); if(res.data == "保持连接中"){ heartCheck.reset(); }else{ res = eval("("+res.data+")"); if(res.type == 'friend' || res.type == 'group'){ layim.getMessage(res); }else{ layim.setFriendStatus(res.id,res.content); } } } // 连接关闭的回调方法 socket.onclose = function(res) { console.log("llws关闭连接!"); // heartContent(); // init(); } }); } ```![图片说明](https://img-ask.csdn.net/upload/201911/15/1573782215_619011.png) ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573782298_769696.png) 服务器刚重启的时候一切都是正常的,时间长了几个小时后吧大概,就出现了readyState永远是3不会变成1了 服务端不断进入@onError ![图片说明](https://img-ask.csdn.net/upload/201911/15/1573782654_761023.png) 求大神解决!

使用nodejs客户端访问golang websocket服务器

<div class="post-text" itemprop="text"> <p>I am a newbie to NodeJS. Assume that I have a echo server implemented with Golang's websocket package:</p> <pre> package main import ( "code.google.com/p/go.net/websocket" "log" "net/http" ) func EchoServer(ws *websocket.Conn) { var msg string websocket.Message.Receive(ws, &amp;msg) log.Printf("Message Got: %s ", msg) websocket.Message.Send(ws, msg) } func main() { http.Handle("/echo", websocket.Handler(EchoServer)) err := http.ListenAndServe(":8082", nil) if err != nil { panic(err.Error()) } } </pre> <p>What should the nodejs client code look like ? </p> </div>

websocket 读写数据库 java

用websocket 进行聊天时,需要将聊天记录存到数据库,然而每次在@open或@Onmessage调用外部类读写数据库时报错, 都是报空指针,在读数据的那个接口 java.lang.NullPointerException

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

做了5年运维,靠着这份监控知识体系,我从3K变成了40K

从来没讲过运维,因为我觉得运维这种东西不需要太多的知识面,然后我一个做了运维朋友告诉我大错特错,他就是从3K的运维一步步到40K的,甚至笑着说:我现在感觉自己什么都能做。 既然讲,就讲最重要的吧。 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力、效率最高的方...

C++(继承):19---虚基类与虚继承(virtual)

一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性 缺点的解决: 数据冗余:通过下面“虚继承”技术来解决(见下) 访问...

再不跳槽,应届毕业生拿的都比我多了!

跳槽几乎是每个人职业生涯的一部分,很多HR说“三年两跳”已经是一个跳槽频繁与否的阈值了,可为什么市面上有很多程序员不到一年就跳槽呢?他们不担心影响履历吗? PayScale之前发布的**《员工最短任期公司排行榜》中,两家码农大厂Amazon和Google**,以1年和1.1年的员工任期中位数分列第二、第四名。 PayScale:员工最短任期公司排行榜 意外的是,任期中位数极小的这两家公司,薪资...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

女朋友过生日,我花了20分钟给她写了一个代理服务器

女朋友说:“看你最近挺辛苦的,我送你一个礼物吧。你看看想要什么,我来准备。” 我想了半天,从书到鞋子到电子产品最后到生活用品,感觉自己什么都不缺,然后和她说:“你省省钱吧,我什么都不需要。” 她坚持要送:“不行,你一定要说一个礼物,我想送你东西了。” 于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想送东西,那你就写一个代理服务器吧”...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

立即提问
相关内容推荐