我正在玩node.js和socket.io-client.我试图连接到一个不存在的通道,以便触发事件'connect_failed'(在https://github.com/LearnBoost/socket.io-client中指定).
但是,我不能让活动工作:
var clientio = require('socket.io-client');
console.log('Trying stuff ...');
// the channel does not exist
var socket = clientio.connect( 'http://localhost:4000/news' );
// I expect this event to be triggered
socket.on('connect_error', function(){
console.log('Connection Failed');
});
socket.on('connect', function(){
console.log('Connected');
});
socket.on('disconnect', function () {
console.log('Disconnected');
});
socket.send('hi there');
Run Code Online (Sandbox Code Playgroud)
如果我执行将会发生这种情况:
$ node tmp_clientio.js
Trying stuff ...
Run Code Online (Sandbox Code Playgroud)
如果连接到不存在的通道,有关如何触发错误的任何想法?
更新:重命名connect_failed为connect_error
我基本上按照文档中提供的指南在Spring中配置Websockets.
我正在尝试从服务器向客户端发送消息,如 " 从任何地方发送消息 " 一节中所述
在示例之后,您可以自动装配名为SimpMessagingTemplate的类
@Controller
public class GreetingController {
private SimpMessagingTemplate template;
@Autowired
public GreetingController(SimpMessagingTemplate template) {
this.template = template;
}
@RequestMapping(value="/greetings", method=POST)
public void greet(String greeting) {
String text = "[" + getTimestamp() + "]:" + greeting;
this.template.convertAndSend("/topic/greetings", text);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我当前的项目找不到bean"SimpMessagingTemplate".(Intellij:'无法自动装配.没有找到SimpMessagingTemplate类型的bean'.
我在互联网上查了几个例子,但是我找不到如何让Spring创建一个SimpMessagingTemplate实例.我怎样才能自动装配它?
编辑:
我决定发送更多背景信息.这是我目前的websocket配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd">
<!-- TODO properties to be read from a properties file -->
<websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/new_session" >
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic"/>
</websocket:message-broker> …Run Code Online (Sandbox Code Playgroud) 我在互联网上的许多地方读到CloudFormation不是幂等的,但我找不到任何证明这一事实的例子.
能否请您提供一个运行资源的示例来证明CloudFormation不是幂等的?
我有一个网站(Java + Spring),它依赖于Websockets(Stomp over Websockets for Spring + RabbitMQ + SockJS)来实现某些功能.
我们正在创建一个基于Python的命令行界面,我们想添加一些使用websockets已经可用的功能.
有谁知道如何使用python客户端,所以我可以使用SockJS协议连接?
PS_我知道一个简单的库,我没有测试,但它没有订阅主题的能力
PS2_因为我可以从python直接连接到RabbitMQ的STOMP并订阅一个主题但直接暴露RabbitMQ感觉不对.有关第二种选择的任何评论?
yamlpython中的库无法检测到重复的密钥.这是多年前报告过的一个错误,还没有修复.
我想找到一个解决这个问题的好方法.创建一个regex返回所有键的可能性有多合理?然后很容易发现这个问题.
任何正则表达式大师都可以建议一个能够提取所有密钥以查找重复项的正则表达式吗?
文件示例:
mykey1:
subkey1: value1
subkey2: value2
subkey3:
- value 3.1
- value 3.2
mykey2:
subkey1: this is not duplicated
subkey5: value5
subkey5: duplicated!
subkey6:
subkey6.1: value6.1
subkey6.2: valye6.2
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JGit来获取上次提交的文件与最近未提交的更改之间的差异.我怎么能用JGit做到这一点?(使用命令行将输出git diff HEAD)
经过几次讨论(link1,link2)后,我带来了一段代码,能够找到未提交的文件,但是我无法区分文件
Repository db = new FileRepository("/path/to/git");
Git git = new Git(db);
AbstractTreeIterator oldTreeParser = this.prepareTreeParser(db, Constants.HEAD);
List<DiffEntry> diff = git.diff().setOldTree(oldTreeParser).call();
for (DiffEntry entry : diff) {
System.out.println("Entry: " + entry + ", from: " + entry.getOldId() + ", to: " + entry.getNewId());
DiffFormatter formatter = new DiffFormatter(System.out);
formatter.setRepository(db);
formatter.format(entry);
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
这个问题很久以前了.我现有的用于显示未提交的代码.prepareTreeParser在显示差异的上下文中,我正在使用的当前代码是:
public void gitDiff() throws Exception {
Repository db = new FileRepository("/path/to/git" + DEFAULT_GIT);
Git git = new …Run Code Online (Sandbox Code Playgroud) 我正在编写一个程序,从Javascript读取输入并将这些读数发送到bash.
我可以成功地运行许多动作,比如"AZ"字母,TAB,CTRL + C等等.但是我意识到我无法正常发送以打击ARROW UP.
如果我从Javascript中读取ascii代码,我将按照JS/jQuery中的Binding箭头键解释以下内容
37 - left
38 - up
39 - right
40 - down
Run Code Online (Sandbox Code Playgroud)
但是,当我向终端发送箭头,十进制密钥代码38时,我写了一个&符号(如下面的ascii表http://www.asciitable.com/)
所以,我的问题是:我必须从Java发送什么代码才能告诉bash"arrow key up"?
PD_我意识到它可能会有所不同,具体取决于操作系统,这个代码可能不会被视为ascii代码,因为这篇帖子建议:在这里输入链接描述
编辑 我使用以下代码从Java写入bash:
JSch jsch = new JSch();
[...]
Channel channel = session.openChannel("shell");
OutputStream out = channel.getOutputStream();
out.write(asciiDecimalCode); // send characters
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我目前正在检查有关编码算法的信息。如果我们有以下情况:
给定一个具有唯一整数元素的排序(递增顺序)数组,编写了一种算法来创建高度最小的二叉搜索树。
建议使用以下代码作为解决方案:
TreeNode createMinimalBST(int arr[], int start, int end){
if (end < start) {
return null;
}
int mid = (start + end) / 2;
TreeNode n = new TreeNode(arr[mid]);
n.setLeftChild(createMinimalBST(arr, start, mid - 1));
n.setRightChild(createMinimalBST(arr, mid + 1, end));
return n;
}
TreeNode createMinimalBST(int array[]) {
return createMinimalBST(array, 0, array.length - 1);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用以下数组输入尝试此代码:
[2,4,6,8,10,20]
我执行第一次迭代
createMinimalBST([2,4,6,8,10,20], 0, 5);
Run Code Online (Sandbox Code Playgroud)
下一行:
int mid = (start + end) / 2; // in Java (0 + 5) / 2 = 2; …Run Code Online (Sandbox Code Playgroud) 我有一个Spring应用程序.由于某些原因,我有一个标准的servlet,我需要servlet才能访问一些spring bean(我知道这不是理想的,我将来会寻找更好的东西).
在Web.xml中
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<description>Tunnel servlet.</description>
<servlet-name>Tunnel</servlet-name>
<servlet-class>
com.something.GuacamoleController
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Tunnel</servlet-name>
<url-pattern>/path</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
和GuacamoleController
public class GuacamoleController extends GuacamoleHTTPTunnelServlet {
@Override
protected GuacamoleTunnel doConnect(HttpServletRequest request)
throws GuacamoleException {
WebApplicationContext webApplicationContext = RequestContextUtils.getWebApplicationContext(request);
[...]
}
}
Run Code Online (Sandbox Code Playgroud)
但它抛出了这个错误:
java.lang.IllegalStateException: No WebApplicationContext found: not in a DispatcherServlet request?
Run Code Online (Sandbox Code Playgroud)
如何将此案例设为DispatcherServlet请求?
我需要Web应用程序上下文,因此我可以使用getBean方法手动访问服务实例