- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在我的网站上使用 socket.io 进行聊天。我还喜欢编写一个小型 Java 应用程序作为此聊天的独立版本。
虽然使用 javascript 的网站工作正常,但我无法让 java 应用程序工作。
网站聊天如下所示:
codepen.io/dreadkopp/pen/zvqEXB
Java 应用程序现在看起来像这样:
package chat;
import io.socket.IOAcknowledge;
import io.socket.IOCallback;
import io.socket.SocketIO;
import io.socket.SocketIOException;
import java.net.MalformedURLException;
import org.json.JSONException;
import org.json.JSONObject;
public class chat {
public static void main(String[] args ) throws MalformedURLException{
String url = "http://yoshi.dynu.com:3000";
SocketIO socket = new SocketIO();
socket.connect(url , new IOCallback() {
@Override
public void onMessage(JSONObject json, IOAcknowledge ack) {
try {
System.out.println("Server said:" + json.toString(2));
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onMessage(String data, IOAcknowledge ack) {
System.out.println("Server said: " + data);
}
@Override
public void onError(SocketIOException socketIOException) {
System.out.println("an Error occured");
socketIOException.printStackTrace();
}
@Override
public void onDisconnect() {
System.out.println("Connection terminated.");
}
@Override
public void onConnect() {
System.out.println("Connection established");
}
@Override
public void on(String event, IOAcknowledge ack, Object... args) {
System.out.println("Server triggered event '" + event + "'");
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket.emit("chat message", "test");
}
}
使用这个.jar:github.com/Gottox/socket.io-java-client
运行程序时,我收到“握手错误”,服务器 http 响应代码:URL http://yoshi.dynu.com:3000/socket.io/1/ 为 400 .
因此,当连接到 http://yoshi.dynu.com:3000/socket.io/1/ 时通过浏览器我得到响应。
服务器通过nodejs使用以下javascript运行:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
io.on('connection', function(socket){
socket.on('chat message', function(msg){
var parts = new Array(2);
parts = msg.split("ID: ");
var ID = parts[1];
msg = parts[0];
console.log('incomming message from ' + ID + ': ' + msg);
io.emit('who', ID);
if (ID != "support") {
io.emit('support' + ' message', msg);
console.log('sent to support: ' + msg);
io.emit(ID + ' message', msg);
console.log('sent to ' + ID + ' :' + msg);
}
if (ID == "support") {
var temp = new Array(2);
temp = msg.split(":");
target = temp[0];
targetmsg = msg.slice(msg.indexOf(":"));
targetmsg = targetmsg.slice(targetmsg.indexOf(" "));
io.emit(ID + ' message', msg);
console.log('sent to ' + ID + ': ' + msg);
io.emit(target + ' message', targetmsg);
console.log('sent to ' + target + ': ' + targetmsg);
}
});
});
http.listen(3000, function(){
console.log('listening on port 3000 \n' + 'awaiting messages and files...');
});
io.on('connection', function(socket){
console.log('a user connected');
});
有人知道为什么它不起作用吗?我现在尝试了 2 天来运行此应用程序,但没有成功:/
最佳答案
您的Java代码是正确的;我复制并为我工作。也许你的 URL 变量是错误的。这是我的 Nodejs 服务器代码:
var express = require("express"),
http = require("http"),
app = express(),
server = http.createServer(app),
path = require('path');
var bodyParser = require('body-parser');
var oracledb = require('oracledb');
var SimpleOracleDB = require('simple-oracledb');
SimpleOracleDB.extend(oracledb);
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, 'public')));
app.set("views", __dirname + "/public");
app.configure(function () {
app.use(express.static(__dirname));
});
app.engine('html', require('ejs').renderFile);
app.set('view engine', 'ejs');
app.get("/pedidosNotificaciones", function (req, res) {
res.render("index1.html", {title: "pedidosNotificaciones"});
});
//app.get('/', function (req, res) {
// res.sendfile(__dirname + '/index1.html');
//});
server.listen(3004);
console.log("Notificaciones servidor en el puerto 3004");
//PRODUCCION
var connAttrs = {
user: "xxxx",
password: "xxxx",
connectString: "xxxxxx"
};
/*
var connectData110 = {
user: "xxxx",
password: "xxxx",
connectString: "//10.21.80.110:1521/BDname"
};
*/
var io = require("socket.io").listen(server);
io.sockets.on('connection', function (socket) {
socket.on('hayCambioDeEstatus', function () {
console.log("abrio un cliente....");
socket.emit("NotificacionDeCambio", "1");
socket.broadcast.emit("NotificacionDeCambio", "1");
});
socket.on('fugasRegistradas', function (idCuenta) {
var uno=0;
oracledb.getConnection(connAttrs, function (err, connection) {
if (err) {
console.log("Error al conectar con la BD....");
uno=1;
return;
}
connection.execute("SELECT FU.IDFUGA,U.NOMBRE AS LEVANTO,ES.DESCRIPCION ESTATUS,FU.FECHAREGISTRO,"
+ " FU.HORAENVIO,FU.HORACONFIRMADO,"
+ " FU.REPORTA,FU.TELEFONOREPORTA,FU.OBSERVACIONES,CA.CANAL"
+ " FROM FG_FUGAS FU"
+ " INNER JOIN CT_CANALES CA ON CA.IDCANAL=FU.IDCANAL"
+ " INNER JOIN CT_ESTATUS ES ON ES.IDESTATUS=FU.IDESTATUS"
+ " INNER JOIN SG_USUARIOS U ON U.IDUSUARIO=FU.IDUSUARIO"
+ " WHERE IDCUENTA="+idCuenta, {}, {
outFormat: oracledb.OBJECT
}, function (err, result) {
if (err) {
console.log("ERROR...EN LA CONSULTA.");
} else {
// console.log(result.rows);
socket.emit('registro', result.rows);
}
connection.release( function (err) {
if (err) {
console.error(err.message);
} else {
console.log("fugasRegistradas.... Conexion liberada");
}
});
});
});
});
socket.on('folioAlternativo', function () {
var uno=0;
oracledb.getConnection(connAttrs, function (err, connection) {
if (err) {
console.log("Error al conectar con la BD....");
uno=1;
return;
}
connection.execute("SELECT SUBSTR(MAX(FOLIOSERVICIO),1,5) AS ALTERNATIVO FROM FG_TERMINADAS WHERE FOLIOSERVICIO >= '50000'", {}, {
outFormat: oracledb.OBJECT
}, function (err, result) {
if (err) {
console.log("ERROR...EN LA CONSULTA.");
} else {
console.log(result.rows);
socket.emit('ultimo', result.rows);
}
connection.release( function (err) {
if (err) {
console.error(err.message);
} else {
console.log("folioAlternativo.... Conexion liberada");
}
});
});
});
});
});
关于使用 Socket.io 的 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32683040/
基于 socket.io 的官方网站 http://socket.io/#how-to-use , 我找不到任何术语。socket.emit 、 socket.on 和 socket.send 之间有
我正在使用 lua-socket 3.0rc1.3(Ubuntu Trusty 附带)和 lua 5.1。我正在尝试监听 unix 域套接字,我能找到的唯一示例代码是 this -- send std
这两者有什么区别? 我注意到如果我在一个工作程序中从 socket.emit 更改为 socket.send ,服务器无法接收到消息,虽然我不明白为什么。 我还注意到,在我的程序中,如果我从 sock
使用套接字在两台服务器之间发送数据是个好主意,还是应该使用 MQ 之类的东西来移动数据。 我的问题:套接字是否可靠,如果我只需要一次/有保证的数据传输? 还有其他解决方案吗? 谢谢。 最佳答案 套接字
引自 this socket tutorial : Sockets come in two primary flavors. An active socket is connected to a
我已经安装了在端口81上运行的流服务器“Lighttpd”(light-tpd)。 我有一个C程序,它使用套接字api创建的服务器套接字在端口80上监听http请求。 我希望从客户端收到端口80上的请
这是我正在尝试做的事情: 当有新消息可用时,服务器会将消息发送给已连接的客户端。另一方面,客户端在连接时尝试使用send()向服务器发送消息,然后使用recv()接收消息,此后,客户端调用close(
如何将消息发送到动态 session 室,以及当服务器收到该消息时,如何将该消息发送到其他成员所在的同一个 session 室? table_id是房间,它将动态设置。 客户: var table_i
这是我尝试但不起作用的方法。我可以将传入的消息从WebSocket连接转发到NetSocket,但是只有NetSocket收到的第一个消息才到达WebSocket后面的客户端。 const WebSo
我正在实现使用boost将xml发送到客户端的服务器。我面临的问题是缓冲区不会立即发送并累积到一个点,然后发送整个内容。这在我的客户端造成了一个问题,当它解析xml时,它可能具有不完整的xml标记(不
尝试使用Nginx代理Gunicorn套接字。 /etc/systemd/system/gunicorn.service文件 [Unit] Description=gunicorn daemon Af
我正在使用Lua套接字和TCP制作像聊天客户端和服务器这样的IRC。我要弄清楚的主要事情是如何使客户端和服务器监听消息并同时发送它们。由于在服务器上执行socket:accept()时,它将暂停程序,
我看了一下ZMQ PUSH/PULL套接字,尽管我非常喜欢简单性(特别是与我现在正在通过UDP套接字在系统中实现的自定义碎片/ack相比),但我还是希望有自定义负载平衡功能,而不是幼稚的回合-robi
我正在编写一个应用程序,其中有多个 socket.io 自定义事件,并且所有工作正常,除了这个: socket.on("incomingImg", function(data) {
在我的应用程序中,我向服务器发送了两条小消息(类似 memcached 的服务)。在类似 Python 的伪代码中,这看起来像: sock.send("add some-key 0") ignored
很抱歉再次发布此问题,但大多数相关帖子都没有回答我的问题。我在使用 socket.io 的多个连接时遇到问题我没有使用“socket.socket.connect”方法,但我从第一次连接中得到了反馈。
我尝试使用 socket.io 客户端连接到非 socket.io websocket 服务器。但我做不到。我正在尝试像这样连接到套接字服务器: var socket = io.connect('ws
我遇到了一个奇怪的问题。在我非常基本的服务器中,我有: server.listen(8001); io.listen(server); var sockets = io.sockets; 不幸的是,套
我正在使用带套接字 io 的sailsjs。帆的版本是 0.10.5。我有以下套接字客户端进行测试: var socketIOClient = require('socket.io-client');
这个问题在这里已经有了答案: What is the fundamental difference between WebSockets and pure TCP? (4 个答案) 关闭 4 年前。
我是一名优秀的程序员,十分优秀!