前端微信代码如下:
wxml
< button type = 'default' bindtap = 'createConn' >创建连接</ button > < view style = 'display:flex;flex-direction:row;margin:10px' > < input type = 'txet' name = 'msg' bindblur = 'getMsg' style = 'width:200px;border:1px solid #cccccc' ></ input > < button type = 'primary' size = 'mini' bindtap = 'send' >发送消息</ button > </ view > < view style = 'height:200px;' > < view style = 'font-weight:bold' >客户端发送的消息:</ view > < block wx:for = '{{sendMsg}}' wx:for-item = 'item1' > < view style = 'color:green' >{{item1}}</ view > </ block > </ view > < view style = 'height:200px' > < view style = 'font-weight:bold' >服务器返回消息</ view > < block wx:for = '{{restData}}' wx:for-item = 'item2' > < view style = 'color:red' >{{item2}}</ view > </ block > </ view > < view style = 'margin:10px' >{{content}}</ view > < button type = 'default' bindtap = 'closeConn' >关闭连接</ button > |
js
Page({ data: { }, createConn: function (){ var page= this ; wx.connectSocket({ url: '192.168.31.233:7788' , data:{ x: '' , y: '' }, header:{ 'content-type' : 'Application/json' }, method: 'GET' }); wx.onSocketOpen( function (res){ console.log(res); page.setData({socketOpen: true }); console.log( 'WebSocket连接已打开!' ) }); wx.onSocketError( function (res){ console.log( 'WebSocket连接打开失败,请检查!' ) }) }, send: function (e){ if ( this .data.socketOpen){ console.log( this .data.socketOpen); wx.sendSocketMessage({ data: this .data.msg }); var sendMsg= this .data.sendMsg; sendMsg.push( this .data.msg); this .setData({sendMsg:sendMsg}); var page= this ; wx.onSocketMessage( function (res){ var resData=page.data.resData; resData.push(res.data); page.setData({resData:resData}); console.log(resData); console.log( '收到服务器内容:' +res.data) }) } else { console.log( 'WebSocket连接打开失败,请检查!' ); } }, closeConn: function (e){ wx.closeSocketClose( function (res){ console.log( 'WebSocket已关闭!' ) }); }, getMsg: function (e){ var page= this ; page.setData({msg:e.detail.value}); } }) |
显示界面如下
报错如下:
用JAVA代码互操作可以实现相互通信:
java服务器代码如下:
import java.io.*; import java.net.*; public class Example06 { public static void main(String[] args) throws Exception { new TCPServer().listen(); } } class TCPServer { private static final int PORT= 7788 ; //定义一个静态常量作为端口号 public void listen() throws Exception { //创建ServerSocket对象,监听指定的端口 ServerSocket serverSocket= new ServerSocket(PORT); //使用while循环不停的接收客户端发送的请求 while ( true ) { //调用ServerSocket的accept()方法与客户端建立连接 final Socket client=serverSocket.accept(); //下面的代码用来开启一个新的线程 new Thread() { public void run() { OutputStream os; //定义一个输出流对象 try { os=client.getOutputStream(); //获取客户端的输出流 System.out.println( "开始与客户端交互数据" ); os.write(( "传智播客欢迎你!" ).getBytes()); Thread.sleep( 5000 ); //使线程休眠5000毫秒 System.out.println( "结束与客户端的交互数据" ); os.close(); //关闭输出流 client.close(); //关闭Socket对象 } catch (Exception e) { e.printStackTrace(); } } }.start(); } } } |
java客户端代码如下:
import java.io.*; import java.net.*; public class Example05 { public static void main(String[] args) throws Exception { new TCPClient().connect(); //创建TCPClient对象,并调用connect()方法 } } //TCP客户端 class TCPClient { private static final int PORT= 7788 ; //服务端的端口号 public void connect() throws Exception { //创建一个Socket并连接到给出地址和端口号的计算机 Socket client= new Socket( "192.168.31.233" ,PORT); InputStream is=client.getInputStream(); //得到接收数据的流 byte [] buf= new byte [ 1024 ]; //定义1024个字节数组的缓冲区 int len=is.read(buf); //将数据读到缓冲区 System.out.println( new String(buf, 0 ,len)); //将缓冲区的数据输出 OutputStream os=client.getOutputStream(); os.write(( "客户端发送消息给服务器" ).getBytes()); os.close(); is.close(); client.close(); //关闭Socket对象,释放资源 } } |
请问各位,为什么java之间可以正常通信,微信无法连接上呢?
微信客户端走的websocket协议,服务器只是简单的tcp数据流传输,协议不匹配
遇到同样的需求,楼主这个问题解决了吗?
还没有,现在在学习java web程序入门,应该是通信协议不同的原因
刚接触小程序,也不懂。谢谢回复^^
哦,你以前做前端的么?
对android熟一点,我的需求是通过小程序与android端的APP在局域网内进行通信。
知道的大侠们指点一下,跪谢
再顶一下