HTML5将成为下一个超级明星.所以~~~如何使用新思路在HTML5规范的WebSocket上实现AJAX ?谢谢....
acani使用zimt websocket进行聊天.我们可以这样做,以便当用户关闭手机并将其放入口袋时,他仍然可以从node.js服务器接收聊天消息并发送位置更新吗?我认为这比推送通知更好.不是吗?如果没有,我们为什么要使用推送通知呢?
谢谢!
如我错了请纠正我...
重点是什么?防火墙是否应该首先发明?如果像我预期的那样,防火墙开始阻止所有Websockets通信,那么首先引入它们的重点是什么?
更新:我的错误.我错误地认为WebSockets允许通过端口80进行任意端口转发隧道.但事实并非如此.WebSockets专门处理通过端口80打开全双工通信.
我的server.js似乎是正确的..
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "mysite.com");
console.log('Server running at mysite.com:1337/');
Run Code Online (Sandbox Code Playgroud)
我的客户的肉在下面.
function init() {
// Connect to Web Socket.
// Change host/port here to your own Web Socket server.
ws = new WebSocket("ws://mysite.com:1337");
// Set event handlers.
ws.onopen = function() {
output("onopen");
};
}
Run Code Online (Sandbox Code Playgroud)
如果我去http://www.mysite.com:1337我正确收到Hello World!但是,当我尝试使用我的客户端连接,并在Fire bug中调试时,我得到以下输出.
[WebSocket] connected
[WebSocket] request header: GET / HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: mysite.com:1337 Origin: http://www.mysite.com Cookie: Sec-WebSocket-Key1: 115 17 p^!x-93 …Run Code Online (Sandbox Code Playgroud) 我想解决这个问题,我实际上并不清楚当我的应用程序在CentOs环境中运行时发生了什么,并且在几天后我开始得到以下异常:
2011-07-12 21:58:03,598 12155907 ERROR [org.jboss.naming.Naming] (JBoss System Threads(1)-2:) Naming accept handler stopping
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at org.jnp.server.Main$AcceptHandler.run(Main.java:481)
at org.jboss.util.threadpool.RunnableTaskWrapper.run(RunnableTaskWrapper.java:148)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
at java.lang.Thread.run(Thread.java:662)
2011-07-12 21:58:03,600 12155909 ERROR [org.jboss.naming.Naming] (JBoss System Threads(1)-2:) Naming accept handler stopping
java.net.SocketException: Too many open files
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at org.jnp.server.Main$AcceptHandler.run(Main.java:481)
at org.jboss.util.threadpool.RunnableTaskWrapper.run(RunnableTaskWrapper.java:148)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:756)
at java.lang.Thread.run(Thread.java:662)
2011-07-12 21:58:03,600 12155909 ERROR [org.jboss.naming.Naming] (JBoss System Threads(1)-2:) Naming accept handler …Run Code Online (Sandbox Code Playgroud) 我正在为ROR 3寻找可靠的websocket服务器.现在我们正在使用socky.这是不可靠的.我们喜欢它,因为它有闪回后退,因此它假设可以在较旧的浏览器上工作......但同样 - 它是不可靠的.你知道任何一个好的websocket服务器ROR与后备(即支持所有浏览器)
嗨所有的stackoverflow人我需要在jAVA中的websocket服务器和客户端实现示例,我研究并没有找到有形的结果,请帮助我谢谢你
我有一个订单簿组件,它正在从此 websocket 端点获取数据"wss://ws.bitstamp.net"
订阅在内部触发useEffect
useEffect(() => {
const subscribe = {
event: "bts:subscribe",
data: {
channel: `order_book_${currencyPair}`
}
};
const ws = new WebSocket("wss://ws.bitstamp.net");
ws.onopen = () => {
ws.send(JSON.stringify(subscribe));
};
ws.onmessage = (event) => {
const response = JSON.parse(event.data);
setOrders(response.data);
};
ws.onclose = () => {
ws.close();
};
return () => {
ws.close();
};
}, [currencyPair]);
Run Code Online (Sandbox Code Playgroud)
但现在的问题是更新太频繁了。我希望它最多每 2 秒更新一次。我想知道我怎样才能做到这一点?我的第二个问题是,有没有办法让我知道 WebSocket 端点向前端传输数据的频率?我对 WebSocket 还很陌生,但我知道它是全双工的,并且服务器正在将数据推送/流式传输到客户端。我很好奇是否有办法知道前端的频率?
这是现场演示https://codesandbox.io/s/orderbook-forked-r2719?file=/src/OrderBook.js
我有一个在本地托管的数据库,需要能够使用 JavaScript 访问该网站的https://nujabes.xyz/。对于服务器端,我使用 Rust 托管它,因为我的数据库就是用它编写的:
\nTCP 服务器Rust:
use std::{\n io::Read,\n net::{Shutdown::Both, TcpListener, TcpStream},\n thread::spawn,\n};\n\nfn handle_client(mut stream: TcpStream) {\n let mut data = [0 as u8; 50]; // using 50 byte buffer\n while match stream.read(&mut data) {\n Ok(_size) => {\n //println!("{:?}", String::from_utf8(data[0..size].to_vec()));\n\n // stream.write(&data[0..size]).unwrap();\n true\n }\n Err(_) => {\n println!(\n "An error occurred, terminating connection with {}",\n stream.peer_addr().unwrap()\n );\n stream.shutdown(Both).unwrap();\n false\n }\n } {}\n}\n\nfn main() {\n let address = "localhost";\n let port = "80";\n\n let …Run Code Online (Sandbox Code Playgroud) 我在网上研究了这个主题,并发现了与此几乎相似的问题 - 但是,我需要知道为什么在 NestJS 中我们必须使用两个包来实现 WebSocket 通信。
这两个包是,
我知道 WebSocket 是一种协议,而 Socket.IO 是一个库,它有服务器版本和客户端版本。
在NestJS的网关文件中实现WebSocket连接时,必须编写类似以下的代码。
import {
ConnectedSocket,
MessageBody,
OnGatewayConnection,
OnGatewayDisconnect,
SubscribeMessage,
WebSocketGateway,
WebSocketServer,
} from '@nestjs/websockets';
import { Server } from 'socket.io';
Run Code Online (Sandbox Code Playgroud)
我的问题,
WebSocketServer和这里有什么区别Server?
为什么我们从 导入而不是Server从导入?socket.io@nestjs/platform-socket.io
您如何用一句话描述使用每个包的目的?
websocket ×10
javascript ×4
html5 ×3
java ×2
ajax ×1
chat ×1
iphone ×1
jboss-4.2.x ×1
jmx ×1
nestjs ×1
networking ×1
node.js ×1
ports ×1
push ×1
reactjs ×1
rust ×1
socket.io ×1
tcp ×1
tcplistener ×1