我有一个正在运行的nodejs服务器(通过浏览器,socket.io工作得非常好,可以发射和接收事件)。为了方便地模拟联机连接,im使用ngrok.io来隧道我的本地主机。这一切都很好。我想编写一个连接到同一服务器的小应用程序,但是虽然我的服务器能够累加socket.connect()调用,但它不能累加任何。emit()事件。
(我使用com.github.nkzawa:socket.io-client:1.0.0和socket.io 2.1.1)
以下是相关的服务器代码:
io.on('connection', function (socket) {
console.log('Something has connected to the server: ' + socket.request.session.id);
socket.on('join', function (username) {
if(!username.username){
username = socket.request.session.username;
}else{
username = username.username;}
console.log('[Socket Chat] '+ username +' has connected to chat');
socket.broadcast.emit('sys message', username + " has joined the chat.");
});
});
同样,这段代码工作得很好。
应用程序的其他部分连接到我的expressjs服务器很好,并能够连接到数据库来登录和其他东西。所以连接本身没有问题,只有socket.io部分。
以下是相关的应用程序代码(我在手机上运行):
private Socket mSocket;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
try {
//IO.Options opts = new IO.Options();
//opts.port = 3000; tried changing post but didn't help
mSocket = IO.socket(AppConfig.URL_CHAT); // URL_CHAT is correct, and its the same url I use with the browser
}
catch (URISyntaxException e) {
throw new RuntimeException(e);
}
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError); //theres an emitter.listener for these, and they do trigger if my url is incorrect or my internet is down
mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
mSocket.connect();
JSONObject obj = new JSONObject();
try {
obj.put("username", Nickname);
} catch (JSONException e) {
e.printStackTrace();
}
//mSocket.open();
mSocket.emit("join", obj);
我已经尽我所能尝试了所有其他答案中的每一种方法。当我运行应用程序时,我的服务器确实打印了带有会话ID的日志“Something has Connected:$ID”,但是join事件不会被触发。事实上,我已经安装了套接字通配符,它也不接收任何发出的事件,使用以下代码:
socket.on('*', function (packet){
console.log(packet.data);
});
它确实从聊天中提取所有其他事件。
Ive尝试发送不同类型的事件、diffrent json数据、字符串。我注意到的一件事是,在应用程序中,socket.connected()返回为false,这很奇怪,因为我的服务器也检测到应用程序何时断开连接。
ive尝试将节点上的socket.io降级到2.0.0,但这也不起作用。
这两个日志上都没有错误,所以我无法完全理解这件事的错误。如何使服务器捕捉。emit()事件?
我想通了,这里有一个答案给任何有类似问题的人。
套接字服务器在site.com/chat上。当我使用io.socket(URL)时,它决定默认名称空间为“/chat”,但事实并非如此。这就是为什么my.on()事件是触发的。如果我在服务器中添加了一个io.of('/chat'),这些事件就会触发。
因此,一个解决方案是将默认名称空间设置为“/chat”,但我使用了一些有点不同的内容,并添加了
Manager manager = new Manager(new URI("site.com/chat"));
mSocket = manager.socket("/");
所以现在我的emit()开始工作了!
问题内容: 这是我的代码。我正在尝试使用箭头键使球移动。当我运行上述程序时 ,不显示球 ( 如果我将坐标更改为显示0,30球), 并且事件未触发,球既不移动也不跳跃 ? 问题答案:
我已经看到了许多关于设置nodejs以使用预先存在的smtp服务器的博客和堆栈溢出问题,尤其是通过nodemailer等模块。我已经看到了一些: https://www . zeol earn . com/magazine/sending-and-receiving-emails-using-nodejs 使用smtp客户端发送电子邮件,无需提供密码 如何创建自定义smtp服务器以在Nodejs中
问题内容: 当我在Node服务器上打印请求的内容时,在任何地方都看不到用户数据。 这是我的节点服务器: 这是Angular2代码: 任何人都可以帮我或解释如何处理角度的http请求。 问题答案: 那是你的服务器: 那是您的有角度的客户: 回购https://github.com/kuncevic/angular-httpclient- examples
Angular.js:14516可能未处理的拒绝:{“data”:null,“status”:-1,“config”:{“method”:“post”,“transformrequest”:[null],“transformresponse”:[null],“jsonpcallbackparam”:“callback”,“url”:“http://localhost:3000/lvl/2/data
概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“
概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“