java websockets onMessage返回输入流到前端javascript
java websockets onMessage return InputStream to frontend javascript
我遇到了一些帖子,没有一个真正回答了我的问题,我也一直在提出这个问题的过程中,但把它推迟了,只是为了研究更多的死胡同…
那么问题来了,使用j2ssh库建立ssh连接:
@OnMessage
public String handleOpen(Session usersession) {
System.out.println("Client is now connected.")
properties = new SshConnectionProperties();
properties.setHost(host)
properties.setPort(sshPort)
ssh.connect(properties, new IgnoreHostKeyVerification())
int result=0
PasswordAuthenticationClient pwd = new PasswordAuthenticationClient()
pwd.setUsername(username)
pwd.setPassword(password)
result = ssh.authenticate(pwd)
if(result == 4) {
isAuthenticated=true
}
// Evaluate the result
if (isAuthenticated) {
session = ssh.openSessionChannel()
SessionOutputReader sor = new SessionOutputReader(session)
if (session.requestPseudoTerminal("gogrid",80,24, 0 , 0, "")) {
if (session.startShell()) {
ChannelOutputStream out = session.getOutputStream()
session.getOutputStream().write("${usercommand} 'n".getBytes())
println "--------------------------------authenticated user"
handleMessage(session.getInputStream(),usersession)
}
}
}
}
@OnMessage
public void handleMessage(InputStream stream, Session usersession) {
try {
usersession.getBasicRemote().sendText('SOMETHING')
usersession.getBasicRemote().sendObject(stream)
//return stream
} catch (IOException e) {
}
}
我想做的是让handleMessage返回整个inputStream
然后在客户端网页上的javascript中接收输入流:
...
webSocket.onmessage=function(message) {processMessage(message);};
var THRESHOLD = 10240;
...
function processMessage(message) {
//webSocket.send(textMessage.value);
//textMessage.value="";
messagesTextarea.value +=" woot woot woot'n";
if(message.data instanceof ArrayBuffer) {
var wordarray = new Uint16Array(message.data);
for (var i = 0; i < wordarray.length; i++)
{
console.log(wordarray[i]);
wordarray[i]=wordarray[i]+1;
}
messagesTextarea.value +=""+wordarray.buffer+"'n"
}else{
messagesTextarea.value +=""+message.data+"'n"
}
/*
setInterval( function() {
//messagesTextarea.value +=" Receive from Server ===> "+ message.data +"'n";
if (webSocket.bufferedAmount < THRESHOLD) {
if ((message.data != null)&&(message.data !="")) {
messagesTextarea.value +=" got from Server ===> ("+message.data+")";
}
} }, 5000);
*/
}
目标是启动ssh连接(实际上不需要输入-尽管有输入将有利于进一步的客户端调用…
一旦连接到运行
handleMessage(session.getInputStream(),usersession)
这将从连接返回流到javascript前端。
目前我可以看到一个连接到handleMessage,但没有返回到javascript前端…
所以我猜这与如何通过javascript前端传输输入流有关.....
我现在已经在做大量的测试了:
Java端点:@OnMessage
public void handleMessage(String message, Session usersession) {
InputStream input=session.getInputStream()
byte[] buffer=new byte[255]
int read;
int i=0
def pattern = ~/^'s+$/
while((read = input.read(buffer)) > 0) {
String out1 = new String(buffer, 0, read)
def m=pattern.matcher(out1).matches()
if (m==false) {
usersession.getBasicRemote().sendText(out1)
}
}
}
前端Java脚本(注意调用没有击中数组)
function processMessage(message) {
if(message.data instanceof ArrayBuffer) {
var wordarray = new Uint16Array(message.data);
for (var i = 0; i < wordarray.length; i++) {
console.log(wordarray[i]);
wordarray[i]=wordarray[i]+1;
}
messagesTextarea.value +=""+wordarray.buffer+"'n"
}else{
messagesTextarea.value +=""+message.data+"'n"
}
}
相关文章:
- 在前端javascript应用程序中使用DI容器有意义吗
- 让 WebStorm 识别后端和前端 JavaScript 文件
- 如何测试前端JavaScript库并与Travis集成
- 在前端javascript网站中弹出图片
- Ember初始化后的Ember.js前端javascript执行
- 如何使用node运行前端Javascript文件
- 用于忽略先前请求响应的前端 JavaScript 模式
- 如何使我的前端Javascript代码更加模块化
- 如何保护前端javaScript代码不被窃取
- 从node.js后端控制前端javascript
- 如何为中型网站构建前端Javascript
- 显示文本区前端Javascript的实时预览
- 在node.js的后端使用已经编写好的前端javascript是否可行
- 从前端JavaScript代码获取Spotify API访问令牌
- java websockets onMessage返回输入流到前端javascript
- 使用node.js, express和handlebars,我应该在哪里放置前端javascript
- 用于前端javascript开发/测试和生产的工作流/工具
- 带有Web API的纯前端JavaScript与带有ajax的MVC视图
- NodeJS加密到前端javascript解密
- 前端JavaScript的服务器主机和端口