そのため、SocketCAN、Express、および Socket.io ノード モジュールをインストールしました。
私がやりたいことは次のとおりです。* Express サーバーで Socket.io を介してソケットを初期化します * サーバーで socketCAN "node-can" モジュールを使用して、フロントエンド (Angular6) にメッセージを送信します
私がこれまでに行ったこと:
* Express サーバーを作成し、そこに Socket.io と node-can を初期化しました * アプリでソケットに接続できるようになりました
これを実現するコードは次のとおりです。
const express = require('express');
const path = require('path');
const http = require('http');
const socketIO = require('socket.io');
var can = require('socketcan');
var channel = can.createRawChannel("vcan0", true);
channel.start();
const app = express();
const port = process.env.PORT || 3000;
app.use(express.static(path.join(__dirname, 'dist/akkaDiagTool')));
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'dist/akkaDiagTool/index.html'));
});
const server = http.createServer(app);
const io = socketIO(server);
io.on('connection', (socket) => {
console.log('socket connected');
socket.on('can message', (from, msg) => {
msg.channel.addListener("onMessage", function(data) {console.log(data);});
console.log('Recieved message by', from , 'sayin ', msg);
});
socket.on('disconnected', (socket) => {
console.log('socket disconnected');
})
})
server.listen(port, () => {
console.log(`Server running on port ${port}`)
})
したがって、アプリを起動してsocketcanでcanメッセージを送信するとcansend vcan0 37F#0000000012343412
、自分のログのみが表示されますmsg.channel.addListener("onMessage", function(data) {console.log(data);});
しかし、console.log('Recieved message by', from , 'sayin ', msg);
ログではありません
私のAngularコンポーネントは次のようになります:
import { Component, OnInit } from '@angular/core';
import * as io from 'socket.io-client';
@Component({
.
.
.
})
export class StaticDataComponent implements OnInit {
socket;
constructor() {
this.socket = io();
this.socket.on('can message', (data) => {
console.log(data);
});
}
socket connected
コンソールでログを取得するため、ソケットを接続する必要があります。
どんな助けでもいただければ幸いです
事前にthx。